1.单元、位和字节
bit,byte,word,dword
2.寄存器
常用寄存器
EBP质指针寄存器
ESP:栈指针寄存器
EIP:指令指针寄存器,控制着指令执行的位置
8个通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP
3.EFALGS
PUSHFD;将EFLAGS寄存器的值压入栈
POPFD;从栈中弹出值存入EFLAGS寄存器
4.常用标志寄存器
z:(零标志)
O:(溢出标志)
C:进位标志
IV:段偏移
栈操作:push:先修改对应的栈指针esp减,然后再存放数据,相当于sub esp,4 ;
mov [esp],eax pop:先取出对应的数据,然后esp增加,相当于mov eax,[esp]; add esp,4
5.指令
windows中大多数数据都是小端序存储格式。
常问的指令
5.1 call/ret指令的执行过程
ret指令,可以将ret指令理解为pop ip; retf 指令理解为 pop ip ,pop cs
call指令,将下一条指令所在的地址压入栈,然后转移
5.2指令 cmp(比较),比较指令会影响标志位
5.3DEC自减
5.4DIV 除指令
5.5 MUL 乘法
5.6inc:自加
5.7 int 指令是调用程序对硬件控制,不同的值对应不同的功能。
5.8常用的跳转指令
ja,jb,jbe,jc,je,jl,jle,jmp,jz,,je jne,jg,jge,jl,jle,jne,等
5.9 nop(无操作)
5.10 or(逻辑或)
5.11 rep,repe,repz,repne,repne
5.12 TEST
test 操作符、操作符
执行与and指令相同的功能,但是不存储操作数.
5.13 xor (异或)
6. 函数调用约定
函数调用约定,就是对函数调用的一个约定和规范,描述了函数参数是怎么传递的和谁清理堆栈的。决定了函数参数的压栈顺序,2)由调用者还是被调用者清理堆栈,3)以及产生的函数名的清理方法。
总结如下:
7. 函数调用初始化操作
除了push ebp mov ebp,esp;之外还会对变量进行初始化操作
8.目前想到的是这些,以后面试问到再补充