(32位汇编 十一)修改EIP的值

JMP指令

无条件跳转。修改EIP的值,而且只影响EIP的值。

MOV EIP, 寄存器/立即数 ;不能执行
简写为:JMP 寄存器/立即数

CALL和RET指令

执行call前

CALL指令

PUSH 地址B
MOV EIP, 地址A/寄存器

简写为:CALL 地址A/寄存器

执行call后

理解:调用call时,会首先把call当前指令的下一条指令地址压入栈中,相应的ESP寄存器会减4,然后将EIP的值修改为call指令指定的地址,然后继续执行程序。

RET(RETN)指令

LEA ESP, [ESP + 4]
MOV EIP, [ESP - 4] ;相当于POP EIP

简写为:RET
相当于POP EIP

执行ret后

理解:调用RET时,会首先弹出栈顶,ESP加4,然后将EIP的值修改为ESP - 4指定的内存单元的值,然后继续执行程序。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容