我们知道,在给定地址(包括)之后反汇编指令可以通过以下方式实现:
x/5i address
Run Code Online (Sandbox Code Playgroud)
这将打印5条指令,但如何拆解前一条指令?
我正在调试JIT代码,所以像拆解一行这样的东西不起作用.我可以反汇编包含地址的随机范围:
disas address-10 address+10
Run Code Online (Sandbox Code Playgroud)
但这很尴尬,你会看到(bad)(希望不在中间!)并开始担心你没有得到正确的东西.我正在寻找的是:
x/-5i address
Run Code Online (Sandbox Code Playgroud)
,但以上将无法正常工作.
x/-5i地址不起作用
在x86或任何具有可变指令大小的体系结构上,通常无法知道上一条指令的起始地址,因此无法可靠地反汇编先前的指令.
我做什么(很相似,你做什么)x/15i $pc-35.当您退回足够数量的字节(此处为35)时,指令流反汇编通常会重新同步,您只能(bad)在开头看到一条或两条指令,但周围的指令$pc看起来是正确的.