经典定长指令下(修改EIP)

1、0x70 - 0x7F 

opcode一个字节

条件跳转,后跟一个字节立即数的偏移(有符号),共两个字节。

如果条件成立,跳转到 当前指令地址 + 当前指令长度 + Ib(immediate byte(一个长度为一字节的立即数)

最大值:向前跳7f,向后跳80

 

 

 

 2、0x0F 0x80 - 0x0F 0x8F

opcode就站两个字节,后面的立即数四个字节

条件跳转,后跟四个字节立即数的偏移(有符号),共六个字节。

如果条件成立,跳转到 当前指令地址 + 当前指令长度 + Id(immediate dword)

最大值:向前跳7FFFFFFFF,向后跳80000000

 

 

 

 3、其他改变EIP指令

LOOP

 

 LOOP比较前先进行ECX--

 

 jrcxz

 

 这个实际上是比较rcx,这是64位中的寄存器,在32位中表示ecx

E8 E9

 

 经典也是最常用的E8 E9

还有两个JMP

 

 

 

 EB只是跳的范围更小

RET

 

 RET  后跟一个数,多数情况下是平衡堆栈,内平栈

RETF就是多传一个值给CS段寄存器

posted @ 2021-04-06 19:48  Punished  阅读(283)  评论(0)    收藏  举报