【发布时间】:2011-12-10 07:30:48
【问题描述】:
我成功地将指令更改为NOP,因为它非常基本:
set *0x08048e3a = 0x90
但我正在尝试更改此地址 0x08048e3a,其中包含 je 0x8048e52。我想改成je 0x8048ea8。
但是当我做set *0x08048e3a = 0x74168048ea8 时它不起作用。
(0x7416 = je 指令)
谢谢
【问题讨论】:
我成功地将指令更改为NOP,因为它非常基本:
set *0x08048e3a = 0x90
但我正在尝试更改此地址 0x08048e3a,其中包含 je 0x8048e52。我想改成je 0x8048ea8。
但是当我做set *0x08048e3a = 0x74168048ea8 时它不起作用。
(0x7416 = je 指令)
谢谢
【问题讨论】:
0x74168048ea8 比一个词长。您应该尝试逐个设置字节,例如
set *(char*)0x08048e3a = 0x74
set *(char*)0x08048e3b = 0x16
等
【讨论】:
CALL 和 JMP 指令是 PC 相关的(也就是说,指令的实际字节将 offset 从当前指令编码到跳转目标(更准确地说,从 next 指令偏移))。因此,如果你想JE 0x8048ea8,实际的指令字节将不包含0x8048ea8。