学习笔记
1、常用寄存器
缩写 | 全称 |
---|---|
EAX | 扩展累加寄存器 |
EBX | 扩展基址寄存器 |
ECX | 扩展计数寄存器 |
EDX | 扩展数据寄存器 |
ESI | 扩展来源寄存器 |
EDI | 扩展目标寄存器 |
EBP | 扩展基址指针寄存器 |
ESP | 扩展堆栈指针寄存器 |
EIP | 扩展指令指针寄存器 |
其中EBP、ESP、EIP不能随意使用:
- EBP:主要用于栈和栈帧
- ESP:指向当前进程的栈空间地址
- EIP:总是指向下一条要被执行的指令
2、栈
- 是操作受限的线性表
- 先进后出FILO
- 地址反向增长(栈底为大地址、栈顶是小地址)
一个字符串正常来说,是从低往高长
3、Call
call xxx:push eip、jmp xxx
call指令的操作数是最终要跳转到的地址
call指令的形式:
- call xxx:立即数寻址,目标地址是xxx,直接跳转到函数或过程的地址
- call eax:寄存器寻址,跳转到寄存器所存储的地址
- call dword ptr [eax]:寄存器间接寻址
- call dword ptr [eax+??]:从基址加偏移后的地址中取出真实地址所在的位置,跳转到这个位置存储的数据的位置执行
- call dword ptr [<&API>]:执行一个系统API
byte 字节 1B
word 字 2B
dword 双字 4B