我在为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
似乎都不起作用。
我错过了什么吗?有没有办法可以从指令中干净地删除偏移量,还是我必须以手动方式进行?
答案 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