逆向工程(三)——IA-32寄存器学习
基本程序运行寄存器
名称 | 种类 |
---|---|
通用寄存器 | EA/B/C/DX,ESI,EDI,EBP,ESP |
段寄存器 | C/D/S/E/F/GS |
程序状态与控制寄存器 | EFLAGS |
指令指针寄存器 | EIP |
寄存器前有E存在,表示该寄存器在IA-16时就有,并且在IA-32时扩展到了32位
1.通用寄存器:
- 用于保存常量和地址以及传送和暂存数据,也可参与算术逻辑运算并保存结果。
- ESP表示栈区域的栈顶指针,PUSH,POP,CALL,RET可直接操作ESP
- EBP表示栈区域基地址,函数被调用时保存ESP的值,函数返回时再把值返回给ESP,用来保证栈不会崩溃。
2.段寄存器:
- 段是一种内存保护技术,段寄存器描述了保护模式下内存分段模型。
- CS:代码段寄存器
- SS:栈段寄存器
- DS:数据段寄存器
- ES:附加段寄存器
- FS:数据段寄存器
- GS:数据段寄存器
3.EFLAGS寄存器:
- ZF:运算结果为0,值为1,否则为0
- OF:有符号整数溢出时OF=1
- CF:无符号整数溢出CF=1
- 待续
4.指令指针寄存器:
- 保存CPU要执行的指令的地址
- 不可以直接修改EIP的值,只能通过其他指令间接修改,JMP,CALL,RET等