从exe / pdb获取有关可执行代码的信息

时间:2009-06-09 14:39:15

标签: windows pdb-files

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

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

* .pdb文件比较好,但我不确定用什么工具来提取这样的信息 - 我看了一下DbgHelp和DIA SDK,后者似乎是正确的工具,但它没有看起来很简单。所以我的问题:

  1. 据您所知,只能通过DbgHelp提取有关代码/数据位置(地址+长度)的信息?
  2. 如果DIA SDK是唯一的方法,任何想法我应该打电话来获取这样的信息? (COM的东西很重)
  3. 还有其他方法吗?
  4. 当然,我首先关注的是Visual Studio,C / C ++源代码编译。

    感谢任何提示。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

好吧,前几天我刚刚读了DIA is a lot easier to use from C#(链接到一个简单程序的源代码);另一个不断出现在谷歌搜索中的程序是PDB Cracker,它也有源代码,可能与您的预期应用程序更相关。