1

我可以通过调用 SymGetLineFromAddr64()dbghelp.dll 使用 dbghelp.dll 在给定地址获取行信息。

它只给我该地址的源代码信息(例如行号和文件名)。但是,在 WinDBG 中,我也可以获得给定地址的汇编代码。我不确定如何使用 dbghelp.dll 来做到这一点。如果不可能,我可以使用任何其他 dll 吗?

4

1 回答 1

1

我认为您无法从 dbghelp 获得反汇编列表。然而,将免费的OllyDbg Disassembler 2.01引擎集成到您的代码中是相当容易的,尽管可能比您想要的要多,只要在反汇编一行时指定了正确的指令起始地址即可;即:您不是从我认为 dbghelp 负责的中间指令地址开始的。也就是说,假设您要反汇编 x86 代码。

唯一的技巧可能是获取当前行的长度是多少字节,这样您就知道要反汇编多少字节,如果您想比当前行开头的 64 个字节的硬编码量更有趣。如果您事先通过 SymEnumLines() 枚举了模块的所有源代码行,您可以使用该信息不仅查找当前行,还可以查找下一行之前的字节数。

于 2016-10-10T17:52:10.147 回答