re
汇编:Intel汇编和AT&T汇编
寄存器(变量)
EAX EBX ECX EDX (通用的)
ESP EBP(堆栈指针) (where)
EIP (指令指针) (下一步执行哪一行)
CF PF AF ZF OF (运算结果标志位)
TF IF DF (状态控制标志位)
符号:
- mov a,b ---- a=b;
- mov a,[b] ---- a=*b;
- add a,b ---- a=a+b;
- sub a,b ---- a=a-b;
- lea a,b ---- a=*b;
- lea a,[b] ---- a=b;
- lea a,[a*b+c] ---- a=a*b+c;
- cmp(-)
- test(&)
- je ---- ==
- jne ---- !=
- jz ---- 运算结果为0
- jg ---- >
- jge ---- >=
- jl ---- <
- jle ---- <=
- jmp ----无条件跳转
Stack view (栈)
调用栈:(问百度)
- push 参数3
- push 参数2
- push 参数1
- call xxxx
- push ebp
- mov ebp,esp
- sub esp,xxxx
- mov esp,ebp
- pop ebp
- ret
MFC程序(图像化)
xspy 程序-->MFC程序调试
用法:把放大镜拖到程序中
结果:分析出事件处理函数的地址
view wizard(句柄精灵)
左下角的两个图标,将小圆盘托到程序的按钮处,再点“有效”
利用IDA调试linux程序过程
- 把ida_server拷贝到linux
- chmod
- 启动server
- 使用ida连接
- 开始调试
反逆向
- 抗静态分析(IDA F5)
1. 自修改
2. 字符串加密
3. 添加垃圾代码
4. 控制流平坦化
5. VM
- 抗动态分析(X96dbg)
1. 自我保护(发现被调试就自杀)
2. 杀调试工具(发现调试器就直接关闭调试器/关机/rm -rf?)
3. 双进程保护(每个进程只能同时被一个调试器调试)
其他
- python
- Android