PDB 文件与 SDB 文件?

逆向工程 雷达2 数据库 pe32
2021-06-21 19:13:11

Radare 有一种格式,称为sdb. 我在这里问了一个问题,

我得到的答案是,

这些 sdbfiles 包含函数名称(DLL 的导出)及其dll在 ./libr/bin/d/dll/ 中的每个的等效序数

链接的页面之一告诉您如何制作sdb文件,给定一个 dll 作为输入我已经这样做了。现在我看到也有 pdb 文件。

|Usage: id Debug information
| Output mode:     
| '*'              Output in radare commands
| id               Source lines
| idp [file.pdb]   Load pdb file information
| idpi [file.pdb]  Show pdb file information
| idpd             Download pdb file on remote server

sdb我创建的特定文件是 Microsoft dll. 此外,我看到微软提供了官方的 pdb 文件

  • 使用pdbover an有什么好处sdb吗?
  • 这些是否都传达了相同的信息,以至于在您已经加载时添加 pdbsdb没有任何作用?

当我加载pdb.

1个回答

虽然sdb创建文件是为了翻译按序数而不是按名称引用的导入(请参阅“按序数而不是按名称从 DLL 导出函数”),但pdb文件完全不同。

程序数据库

程序数据库 (PDB) 文件或 DBG 文件由编译器生成。开发人员使用 PDB 文件来调试他们的程序,并且通常在二进制文件分发到客户端之前从二进制文件中删除。大多数情况下,您不会在大多数现实世界的二进制文件中找到调试符号。

符号文件包含运行二进制文件时实际不需要的各种数据,但在调试过程中可能非常有用。

PDB 文件通常包含:

  • 公共符号(通常是所有函数、静态和全局变量)
  • 负责可执行文件中代码段的目标文件列表
  • 帧指针优化信息 (FPO)
  • 局部变量和数据结构的名称和类型信息
  • 源文件和行号信息

Microsoft 在其符号服务器上发布所有操作系统和其他重新分发组件的所有 PDB 文件。这使得调试使用这些 DLL 或可执行文件的应用程序变得容易。您可以使用 Microsoft 符号服务器来解析符号以及在您的计算机上构建的组件的任何本地符号。

您可以在以下链接中找到有关radare2 如何解释 PDB 文件的更多信息:

PDB 与 SDB

正如您现在可能已经发现的那样,SDB 和 PDB 是两种不同的东西,出于调试目的,PDB 更有帮助。

进一步阅读: