我希望更新特定地址的汇编指令。为了做到这一点,我反汇编了一个C函数,以便查看汇编指令的存储方式,具体看下面的说明:
0x088... jmp 0x88465002
(gdb) x /2b 0x088
0x088... <main+20> 0xeb 0x15
我发现指令是以字节为单位编码的,例如JMP
编码为0xEB
。但是,为什么JMP
的位置存储为0x15
?这是因为我们在堆栈中跳0x15
个字节(即0x15
是偏移量)?
谢谢 -
答案 0 :(得分:3)
0xEB
是x86上短相对跳转的操作码。 Short表示8位有符号位移。是0x15
是相对于当前指令计数器值的位移(因此该地址的下一个指令的地址),接下来是0x15 = 21个字节。