Ox00 前言
Ox10 硬件基础
- 通用寄存器
- 8位
- al, ah , bl, bh , cl , ch , dl ,dh
- 16位
- ax,cx,dx, bx, si, bi , sp ,bp
- 32位
- eax,ecx,edx,ebx,esi, ebi , esp ,ebp
- 64位
- rax,rcx,rdx, rbx, rsi, rbi , rsp ,rbp, r8,r9,r10,r11,r12,r13,r14,r15
- 段寄存器
- 标志寄存器
- elags
- ZF - 零标志位
- SF - 符号标志位
- OF - 溢出标志位
- CF - 进位标志位
- AF - 辅助进位标志位
- PF - 奇偶标志位
- DF - 方向标志位
- IF - 中断允许标志位
- TF - 陷阱标志位
- 指针寄存器
Ox20 指令基础
- 数据传送指令
- 算术运算指令
- inc
- dec
- add
- sub
- imul/mul
- idiv/div
- 位操作指令
- 串操作指令
- 条件跳转指令
- 控制转移指令
Ox30 程序基础
- 选择结构
- 循环结构
- 函数
- 函数传参(调用约定)
- cdecl
- stdcall
- thiscall
- 使用ecx保存对象首地址(this指针) 参数依次从右往左入栈
- 函数内部平衡栈
- fastcall
- 前两个参数依次使用ecx,edx传递, 后续参数依次从右往左入栈
- 函数内部平衡栈
- 64位fastcall
- 前4个参数依次使用rcx,rdx,r8,r9传递, 后续参数从右往左通过栈传递
- 函数外部平衡栈
- 函数栈帧
- 打开栈帧: push ebp; mov ebp ,esp
- 关闭栈帧: mov esp,ebp ; pop ebp
- 定位参数
- 定位局部变量
- 函数返回值(一般通过eax传递)
Ox40 逆向基础