汇编 JMP使用详解
汇编JMP详解关键词说明
RVA:相对虚拟地址(RelativeVirtualAddress),在内存中相对于PE文件装入地址的偏移位置,是一个相对地址。
JMP的3种类型
- 短跳转(ShortJmp,只能跳转到256字节的范围内),对应机器码:EB
- 近跳转(NearJmp,可跳至同一段范围内的地址),对应机器码:E9
- 远跳转(FarJmp,可跳至任意地址),对应机器码:EA
短跳转和近跳转指令中包含的操作数都是相对于(E)IP的偏移。
远跳转指令中包含的是目标的绝对地址。
所以短/近跳转会出现跳至同一目标的指令机器码不同,不仅会不同,而且应该不同。
而远跳转中包含的是绝对地址,因此转移到同一地址的指令机器码相同。
至此,我们知道了跳转指令所对应的机器码根据E(IP)计算出来的,那到底是怎么计算的呢?
JMP目标地址计算方式
目标地址=当前指令地址+指令长度+RVA
举例说明
如图:想要从001392DB处跳转到001392E1这个地址,那么E9后面应该跟多少呢?
RVA=001392E1-001392DB-5
在计算机中使用上面的公式计算结果就是RVA=1所以后面应该是跟E901000000
其中5是指令长度E9后面需要跟4字节的地址,所以指令(1)+地址(4)=5
ps:如果计算结果是负数,则数值后面应该用FF填充,如负一则应该用E901FFFFFF
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。