假设我有以下一套说明:
00E79E00 | E8 AE580000 CALL someprocess.00E7F6B3
00E79E05 | 85C0 TEST EAX, EAX
(output taken from OllyDbg)
如何编码来自近程调用(0xE8)的rel32偏移量,以便我可以得到 我可以跳到绝对位置吗?
我知道偏移是相对于下一条指令的,并通过用它减去目标来计算。我的问题是:如何“反转”这个,所以我从相对偏移量00E7F6B3
获得函数地址AE580000
答案 0 :(得分:3)
您只需获取下一条指令的地址(00E79E05)并从指令中添加32位有符号偏移量(58AE,小端,记得吗?)
00E79E05
+ 58AE
--------
00E7F6B3
答案 1 :(得分:2)
这真是微不足道,真的:
Origin = E79E00
Target = E7F6B3
Offset = 58AE
Target = Origin + Offset + 5 (5 being the size of the call instruction)