2016-10-10 48 views
1

我可以通過調用dbghelp.dll的SymGetLineFromAddr64()來使用dbghelp.dll在給定地址獲取行信息。是否可以使用dbghelp.dll從給定地址獲取彙編代碼?

它只給出該地址的源代碼信息(例如行號和文件名)。但是,在WinDBG中,我也可以獲得給定地址的彙編代碼。我不知道如何使用dbghelp.dll來做到這一點。如果不可能,我可以使用任何其他的DLL?

+2

這是[調試器](https://msdn.microsoft.com/en-us/library/windows/hardware/ff552179(v = vs.85).aspx)的作業,而不是dbghelp.dll 。或者使用ReadProcessMemory()。 –

回答

1

我不認爲你可以從dbghelp得到反彙編列表。然而,只要在拆解一條線時指定了正確的指令起始地址,雖然比你想要的更多的工作可以很容易地將免費的OllyDbg Disassembler 2.01引擎集成到你的代碼中;即:你並不是從我認爲dbghelp需要照顧的中間指令地址開始的。也就是說,假設您想要反彙編x86代碼。

唯一的技巧可能是獲取當前行的長度有多少個字節,這樣您就知道需要反彙編多少,如果您希望比當前行開頭的硬編碼量64字節更加豐富。如果您事先通過SymEnumLines()枚舉了模塊的所有源代碼行,則可以使用該信息來查找不僅當前行,而是查找直到下一行的多少個字節。

相關問題