2

我需要从经典的 win32 exe/dll 文件中提取代码(但不是数据!)。很明显,我不能仅通过提取代码段内容来做到这一点(因为代码段也包含数据——例如跳转表),并且我需要编译器的一些帮助。

*.map 文件很好,但它们只包含函数的地址,即我能做的最安全的事情是从该地址开始并处理直到第一个返回/跳转指令(因为函数的一部分可以被提及数据)

*.pdb 文件更好,但我不确定使用什么工具来提取这样的信息——我查看了 DbgHelp 和 DIA SDK,后者似乎是正确的工具,但看起来不是很简单. 所以我的问题/问题:

  1. 据您所知,是否可以仅通过 DbgHelp 提取有关代码/数据位置(地址 + 长度)的信息?
  2. 如果 DIA SDK 是唯一的方法,知道我应该调用什么来获取这样的信息吗?(COM的东西很重)
  3. 还有其他方法吗?

当然,我首先关心的是 Visual Studio,C/C++ 源代码编译。

感谢您的任何提示。

4

2 回答 2

1

在此处的页面上有一个PDB 提取器可供下载:http: //undocumented.rawol.com。当您使用 /type 选项时,它可以提取所有信息。这里还有一篇带有 PDB 查看器的文章:http: //www.codeproject.com/KB/bugs/PdbParser.aspx,但它提取的信息较少。

这两个实用程序都带有源代码。

于 2011-02-12T19:09:33.747 回答
0

好吧,前几天我碰巧读到DIA 在 C# 中更容易使用(一个简单程序的源代码链接);另一个在我的谷歌搜索中不断出现的程序是PDB Cracker,它也有源代码,并且可能与您的预期应用程序更相关。

于 2010-03-15T23:06:38.570 回答