2016-10-10 6 views
1

dbghelp.dllのSymGetLineFromAddr64()を呼び出すことによって、dbghelp.dllを使用して与えられたアドレスで回線情報を取得できました。dbghelp.dllを使用して、指定されたアドレスからアセンブリコードを取得することはできますか?

そのアドレスのソースコード情報(例:行番号とファイル名)のみが表示されます。しかし、WinDBGでは、与えられたアドレスのアセンブリコードを取得することもできます。私はdbghelp.dllを使ってどのようにできるのかよくわかりません。可能でない場合は、他のDLLを使用できますか?

+2

これはdbghelp.dllではなく、[デバッガ](https://msdn.microsoft.com/en-us/library/windows/hardware/ff552179(v=vs.85).aspx)の仕事です。 。または、ReadProcessMemory()を使用します。 –

答えて

1

dbghelpから逆アセンブリリストを取得することはできません。しかし、あなたが望む以上に多くの作業がありますが、無料のOllyDbg Disassembler 2.01エンジンをコードに組み込むのはかなり簡単ですが、行を逆アセンブルするときに指示の正しい開始アドレスが指定されていれば、つまり、dbghelpが処理する中間命令であるアドレスでは開始しません。つまり、x86コードを逆アセンブルしたいと仮定します。

現在の行の先頭から64バイトのハードコーディングされた量よりも賢くなりたい場合は、現在の行の長さがどのくらいあるか分かります。あらかじめSymEnumLines()を使ってモジュールのすべてのソース行を列挙しておけば、その情報を使って現在の行だけでなく、次の行までのバイト数を見つけることができます。

関連する問題