15.x86游戏实战-汇编指令jmp call ret

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3 复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:14.x86游戏实战-汇编指令cmp test

jmp无条件跳转

call无条件跳转,call与jmp的区别,jmp只仅仅跳转,call跳转之前会把它下一句代码的地址放到栈里。

ret在执行ret时,ret会把栈里第一个数据当做内存地址,并且会跳转到这个内存地址

上方提到了栈,栈就是一块内存空间,只是这个内存空间使用的时候有些特殊,看下方截图

jmp

执行 jmp 0x751D67F5

执行之后,会跳到0x751D67F5这个位置,什么寄存器都没改,下图看到eip的值是红的,这不是改了吗?eip它的值表示的是下一次该执行的代码的地址,如下图eip的值是0x751D67F5,这说明下一次就要执行0x751D67F5位置的代码了,也就是call 0x751D67FE这个代码,eip的值只要执行了代码都会发生改变,所以它不算是被修改

call

执行call 0x751D6811,在执行之前,可以看到它的下一句代码的地址是0x751D680D

这里执行时要注意点单步步入,不要点单步步过

执行之后,它把下一行代码的地址放到了栈里,并且发生了跳转,如下图

ret

执行ret之前

执行之后,把栈里第一个数据当做代码地址跳转了过去,并且把栈里第一个数据进行了删除(改变了栈第一个数据是谁)

所以call一般与ret一起使用,只要有call就肯定有ret


img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值