re

汇编:Intel汇编和AT&T汇编

寄存器(变量)

EAX EBX ECX EDX (通用的)

ESP EBP(堆栈指针)  (where)

EIP (指令指针) (下一步执行哪一行)

CF PF AF ZF OF  (运算结果标志位)

TF  IF  DF    (状态控制标志位)

re

符号:

  • 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