从通过dbgeng' DisassembleWide()拆解的指令中删除地址

时间:2014-12-18 10:24:19

标签: debugging winapi windbg dbgeng

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

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

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

1 个答案:

答案 0 :(得分:1)

不会打印地址,您必须自己解析 如果您正在进行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