E9 跳转指令的用法?

cs100504 2010-05-19 08:00:56
E9 跳转指令的用法?

比如:从 0x11223344 E9 AABBCCDD 跳到目标 0xEEDDCCBB


AABBCCDD 怎么计算?

谢谢。



...全文
561 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cs100504 2010-05-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 redher 的回复:]
跳转指令用的都是偏移地址.
不然,程序如果加载的位置变了. 就不能正确跳转了 .
建议搂住还是从基础开始.
[/Quote]

EA 4433221108000000

绝对跳转 to 0x11223344
dididu1515 2010-05-19
  • 打赏
  • 举报
回复
你这是32位汇编,000000x的值转换成汇编编码的规律:
jmp 0002H
IP1=004ED879H
IP2=00000002H
IP2-(IP1+本句指令字节数)=2-(4ED879H+5)=0FFB12784H

Jmp 0040H
IP1=004ED879H
IP2=40H
IP2-(IP1+本句指令)=40-(4ED879H+5)=FFB127C2H
汇编里的数次序要反过来:
E9 C227B1FF
以上只是远跳转,近跳转"本句指令字节数"会缩短。

参考: 汇编中的JMP后面的值也就是E9 XXXX怎样计算的_百度知道
http://zhidao.baidu.com/question/105950930.html?fr=qrl&cid=865&index=5
redher 2010-05-19
  • 打赏
  • 举报
回复
跳转指令用的都是偏移地址.
不然,程序如果加载的位置变了. 就不能正确跳转了 .
建议搂住还是从基础开始.
cklx0401 2010-05-19
  • 打赏
  • 举报
回复
你直接用机器码~?不是在搞反汇编破解吧。
zara 2010-05-19
  • 打赏
  • 举报
回复
看指令的说明啊。AABBCCDD 就是地址偏移,是目标地址和该调用指令下一条指令(即 JMP 指令正常返回的地址)间的差。
“0x11223344 E9 AABBCCDD”,该指令为 5 字节,则下一条指令的地址就是 0x11223349了。所以,偏移 AABBCCDD = 0xEEDDCCBB - 0x11223349
pandazhong 2010-05-19
  • 打赏
  • 举报
回复
只知道JMP,不知道E9也能跳转,接分。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧