我可以通过调用 SymGetLineFromAddr64()
dbghelp.dll 使用 dbghelp.dll 在给定地址获取行信息。
它只给我该地址的源代码信息(例如行号和文件名)。但是,在 WinDBG 中,我也可以获得给定地址的汇编代码。我不确定如何使用 dbghelp.dll 来做到这一点。如果不可能,我可以使用任何其他 dll 吗?
我可以通过调用 SymGetLineFromAddr64()
dbghelp.dll 使用 dbghelp.dll 在给定地址获取行信息。
它只给我该地址的源代码信息(例如行号和文件名)。但是,在 WinDBG 中,我也可以获得给定地址的汇编代码。我不确定如何使用 dbghelp.dll 来做到这一点。如果不可能,我可以使用任何其他 dll 吗?
我认为您无法从 dbghelp 获得反汇编列表。然而,将免费的OllyDbg Disassembler 2.01引擎集成到您的代码中是相当容易的,尽管可能比您想要的要多,只要在反汇编一行时指定了正确的指令起始地址即可;即:您不是从我认为 dbghelp 负责的中间指令地址开始的。也就是说,假设您要反汇编 x86 代码。
唯一的技巧可能是获取当前行的长度是多少字节,这样您就知道要反汇编多少字节,如果您想比当前行开头的 64 个字节的硬编码量更有趣。如果您事先通过 SymEnumLines() 枚举了模块的所有源代码行,您可以使用该信息不仅查找当前行,还可以查找下一行之前的字节数。