我需要从经典的 win32 exe/dll 文件中提取代码(但不是数据!)。很明显,我不能仅通过提取代码段内容来做到这一点(因为代码段也包含数据——例如跳转表),并且我需要编译器的一些帮助。
*.map 文件很好,但它们只包含函数的地址,即我能做的最安全的事情是从该地址开始并处理直到第一个返回/跳转指令(因为函数的一部分可以被提及数据)
*.pdb 文件更好,但我不确定使用什么工具来提取这样的信息——我查看了 DbgHelp 和 DIA SDK,后者似乎是正确的工具,但看起来不是很简单. 所以我的问题/问题:
- 据您所知,是否可以仅通过 DbgHelp 提取有关代码/数据位置(地址 + 长度)的信息?
- 如果 DIA SDK 是唯一的方法,知道我应该调用什么来获取这样的信息吗?(COM的东西很重)
- 还有其他方法吗?
当然,我首先关心的是 Visual Studio,C/C++ 源代码编译。
感谢您的任何提示。