【发布时间】:2018-09-18 05:12:21
【问题描述】:
我是 gdb 和程序集的新手。我正在尝试将助记符指令从jg 更改为jle,但是每当我更改助记符时,它也会更改目标地址。例如,
假设我正在尝试修改这个:
4005a5 0f 8f 1e 01 00 00 jg 400c74 <Function_1>
原来如此
$set *0x4005a5 = 0x7e
然后,它会将 400c74 更改为某个随机地址,例如 400ae4。
我以为可能是短跳和近跳的问题,
所以我什至做了= 0x0f8e= 0x74400c7e= 0x0f8e400c74等等。
但是,他们都在改变跳转到位置..
谁能解释一下为什么会这样?
【问题讨论】:
-
你能从 GDB 显示之后的反汇编吗?我不确定
set的默认大小,它可能会覆盖多个字节。而 x86 是 little-endian,所以0x0f8e不是0f 8e。
标签: assembly x86 gdb machine-code