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

标签 windows pdb-files

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

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

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

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

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

感谢任何提示。

最佳答案

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

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

关于windows - 从 exe/pdb 获取有关可执行代码的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/970443/

相关文章:

c# - 如何从pdb读取源路径

windows - 批量获取 0 字节文件的计数

windows - 如何在本地创建一个telnet服务器?

python - Windows pip 在错误的目录中安装库

c# - 为什么我的 Service Fabric 代码会锁定它自己的 PDB?

c# - 反编译.pdb文件C#(程序数据库)

visual-studio-2013 - 找不到匹配的符号文件(无法找到/打开 pdb 文件)

windows - 使用哪个工具打开 .pdb(符号)文件?

windows - 如何创建一个批处理脚本,在达到文件夹大小限制时删除最旧的文件

windows - 使用 Certum 证书进行代码签名