jmp 远跳转绝对地址是怎么计算的?

VirtualRookit 2011-03-23 06:27:35
010BCDF3 6A 00 push 0
010BCDF5 6A 00 push 0
010BCDF7 6A 00 push 0
010BCDF9 6A 00 push 0
010BCDFB 68 03 CE 0B 01 push offset label_1 (10BCE03h)
010BCE00 FF 65 EC jmp dword ptr [hProc]
label_1:


//如上代码 hProc为MessageBoxA的地址..请问
010BCE00 FF 65 EC jmp dword ptr [hProc]
单步执行后如下:
76C4EA71 8B FF mov edi,edi
76C4EA73 55 push ebp

问: 绝对跳转地址新EIP(76C4EA71)是怎么由旧EIP(010BCE00 FF 65 EC)计算出来的?
就是绝对地址的计算方法(别讲些相对地址的计算方法,这个我懂)。哪位大牛给指点下,谢谢。
...全文
266 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
VirtualRookit 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zara 的回复:]
FF 65 EC jmp dword ptr [hProc] 指令,hProc 是个局部变量,此前就已经计算好了目标地址存放到这个变量里了;这个 jmp 指令只是直接拿这个目标地址来进行转移而已。具体怎么计算的,要看更前面的对 hProc 变量的赋值来源。
[/Quote]

sorry 你说得对,是我理解错了。感谢咯。
VirtualRookit 2011-03-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zara 的回复:]
FF 65 EC jmp dword ptr [hProc] 指令,hProc 是个局部变量,此前就已经计算好了目标地址存放到这个变量里了;这个 jmp 指令只是直接拿这个目标地址来进行转移而已。具体怎么计算的,要看更前面的对 hProc 变量的赋值来源。
[/Quote]

并非如此hProc哪是MessageBoxA在Kernel32.dll里的地址,值即为7xxxxxxx..,所以并非你说的那样,请教牛人intel x86系列 jmp远跳转,绝对地址,机器码为EC XX(jmp)..XX究竟是怎么算的
zara 2011-03-24
  • 打赏
  • 举报
回复
FF 65 EC jmp dword ptr [hProc] 指令,hProc 是个局部变量,此前就已经计算好了目标地址存放到这个变量里了;这个 jmp 指令只是直接拿这个目标地址来进行转移而已。具体怎么计算的,要看更前面的对 hProc 变量的赋值来源。

9,513

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 安全技术/病毒
社区管理员
  • 安全技术/病毒社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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