JMP指令:修改EIP的值
MOV EIP,寄存器/立即数 简写为 JMP 寄存器/立即数
CALL指令:
PUSH 地址B
MOV EIP,地址A/寄存器
简写为:CALL 地址A/寄存器
RET指令:
LEA ESP,[ESP+4]
MOV EIP,[ESP-4]
简写为:RET
CMP指令:
指令格式:CMP R/M,R/M/IMM
该指令是比较两个操作数,实际上,它相当于SUB指令,但是相减的结构并不保存到第一个操作数中。只是根据相减的结果来改变零标志位的,当两个操作数相等的时候,零标志位置1。
MOV EAX,100
MOV ECX,100
CMP EAX,ECX
观察Z位
MOV EAX,100
MOV ECX,200
CMP EAX,ECX
观察S位
CMP AX,WORD PTR DS:[405000]
CMP AL,BYTE PTR DS:[405000]
CMP EAX,DWORD PTR DS:[405000]
TEST指令:
指令格式:TEST R/M,R/M/IMM
该指令在一定程序上和CMP指令时类似的,两个数值进行与操作,结果不保存,但是会改变相应标志位.
与的操作表项如下:
1 and 1 = 1
1 and 0 = 0
0 and 1 = 0
0 and 0 = 0
常见用法:用这个指令,可以确定某寄存器是否等于0。
TEST EAX,EAX
观察Z位
但是如果EAX的二进制某些位为1的话,那么运算的结果就不为零。
有符号无符号的区别:
CMP AL,CL
JG 0x12345678
JA 0x12345678
1、CALL执行时堆栈有什么变化?EIP有变化吗?
堆栈PUSH当前地址,EIP变为所跳的地址
2、RET执行时堆栈有什么变化?EIP有变化吗?
堆栈POP地址,EIP变为所POP得地址
3、使用汇编指令修改标志寄存器中的某个位的值,实现JCC的十六种跳转.
不允许在OD中通过双击的形式修改标志寄存器.
要通过汇编指令的执行去影响标志位,能用CMP和TEST实现的优先考虑.
标签:EIP,逆向,寄存器,MOV,EAX,指令,JCC,CMP From: https://www.cnblogs.com/BDAMBXA/p/17131414.html