0

DisassembleWide()Windbg の拡張機能を作成する際に、オフセットを関数に渡して命令を逆アセンブルしています。ただし、逆アセンブルされた命令では、命令のアドレス + その命令の 16 進オペコードが追加されます。

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ようです。

何か不足していますか?命令からオフセットをきれいに削除する方法はありますか、それとも手動で行う必要がありますか?

4

1 に答える 1

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
于 2014-12-19T20:32:14.193 に答える