从通过 dbgeng 的 DisassembleWide() 反汇编的指令中删除地址



我在为 Windbg 编写扩展时,通过将指令偏移量传递给函数来反汇编指令DisassembleWide()。但是,对于反汇编指令,它会添加指令的地址 + 该指令的十六进制操作码。

我能够通过在 SetAssemblyOptions() 中指定DEBUG_ASMOPT_NO_CODE_BYTES标志来删除操作码。但是,我似乎无法摆脱指令偏移。DEBUG_ASMOPT_DEFAULT | DEBUG_ASMOPT_NO_CODE_BYTES(DEBUG_ASMOPT_DEFAULT | DEBUG_ASMOPT_NO_CODE_BYTES) & ~DEBUG_ASMOPT_VERBOSE似乎都不起作用。

我错过了什么吗?有没有办法我可以干净地从指令中删除偏移量,还是必须手动完成?

不会始终打印地址 你必须自己解析出来如果您正在使用 WindBG 会话,则可以使用 .shell 和 awk 来实现此目的。

0:000> .asm no_code_bytes
Assembly options: no_code_bytes
0:000> .shell -ci "u @eip l4" awk "{$1="";print $0}"
 int 3
 ret
 mov edi,edi
 int 3
.shell: Process exited

最新更新