Git命令行基础使用
新建仓库并上传
安装目录自己指定,在后面的安装过程中除了改选Override the default branch name for new respositories为main(主要是为了匹配目前Github的主分支)外其他按照默认即可

FreeMASTER 下载
下载FreeMaster 2.5版本,安装时记得选择Custom,在插件里面勾选CMSIS-DAP和Jlink的插件,否则后续可能无法使用对应调试器
打开FreeMASTER,选Project下的Option,在Common选卡里面选Plug-in Module,下拉列表里面选调试器类型。正点原子的无线调试器是CMSIS DAP,Jlink OB就选Jlink。选完后点Configure,按左下角的Test Connection检查调试器是否正常连接。
如果是Jlink的话在Configure窗口里选Core Type为Cortex-M4(STM32F4就是用Cortex-M4的)再Test Connection即可,如果选CPU Type可能会因为是非NXP芯片而被拒绝
配置完调试器后,在Option窗口里面选MAP Files选卡,Default symbol写Keil生成的axf文件的路径,File format选ELF。可以点下面的View检查是否读取到变量的地址
配置完成调试器和axf文件后,在主界面的Project里面选Variables,点New,在弹出来的窗口里的Address里直接输入你想查看的变量名(同代码写法),如果地址非空则说明识别成功,同时不要忘记配置你的变量类型和长度。变量显示的名称可以在Variable里面改。点确定即可
或者可以点Generate在弹出的列表里选择你想要的变量,点Generate Single Variable,或者如果是连续数组元素的话点Generate array for symbol
这些配好的变量可以在接下来的过程里面使用
这里完成配置之后请保存一次项目到工程的文件夹里,以免配置丢失
CISCN Android逆向题Writeup
1.存在栈溢出(如gets,read)至少能写入到执行至retn时的栈顶处
2.获取shell的函数选择(system,execve,syscall)
3.获取对应函数的地址(看导入表中有无对应函数,如果无,需要通过write或puts等函数泄露相对地址),泄露地址可以通过DynELF实现
4.在栈上布置调用函数所需要的非指针参数(入寄存器的参数通过多次执行含pop寄存器的gadgets实现)
5.指针参数如字符串“/bin/sh”可以采用直接搜索(在ELF中,已知相对地址可在libc中),或者在程序可写的数据段(.bss)中写入。
6.写出若干payload(泄漏地址+布置参数调用起shell函数),注意架构的区别,不能确定调用指令用gcc -S汇编.c文件测试
首先,x64下的地址长度为8byte,而x86下为4byte
其次,x86中的read,write,system函数都是通过栈传递参数的,因此只要能在栈上写入参数即可。但是x64中则是通过rdx,rsi,rdi(edx,edi,esi)三个寄存器(或三个中的部分)传递参数,因此需要使用ROPgadget或pwntool中的ROP.find_gadget搜索pop相应寄存器的片段,通过栈上保存的参数写入寄存器再调用。
1 | read(fd:edi,*buf:rsi,len:edx) |
本文与 0xFFFF论坛:记录下折腾香橙派过程中踩过的坑 同步
几个月之前入手了一块Orange PI One Plus开发板,实际用途是想拿来做个机顶盒(玩的)
本文虽然主要讨论的是One Plus,但很多软件操作同样适用于Orange PI 3
简单说一下硬件资源,这块开发板CPU是全志H6,带4K硬件解码,开发板本身带HDMI,红外,麦克风以及一个千兆网口,详细资料看这里。 其实如果把这块开发板的硬件与树莓派3甚至4比,它的优势是很明显的,毕竟4K硬件解码也是到了4才有,但是软件开发支持不怎么友好。
通过导入电机的阶跃响应数据到Matlab进行系统辨识,并使用PID Tuner对辨识出的系统调节PID参数