将 pdb 文件与商业应用程序一起重新分发是否明智?
有时,我使用堆栈跟踪从已部署的应用程序中获取更详细的错误报告日志;可以在不依赖这些文件的情况下实现此功能吗?
另外,这些文件包含多少原始源代码的提示?使用它对我的应用程序进行逆向工程会更容易吗?
它基本上添加了以下信息:
所有这些结合起来使得本机代码的逆向工程非常容易。
幸运的是,您可以创建仅包含带有/PDBSTRIPPED参数的公共信息的 PDB 文件的精简版本。
哦,您编辑添加了 C#/.NET,所以我不确定“PDBSTRIPPED”是否适用。然而,即使没有任何符号信息,.NET 应用程序也很容易进行逆向工程。我不介意将它们包含在 .NET 项目中。
您可以尝试使用dia2dump查看内容。
托管 .pdb 文件包含以下信息:
其他所有内容都包含在二进制文件本身中,包括所有类型的名称、成员和函数参数。
来源:PDB 文件:每个开发人员都必须知道的内容。
PDB 文件还包括源文件的所有注释。因此,使用 EXE 和 PDB 文件可以从原始源代码生成 1:1 副本。
较新的 .Net 编译器版本可以在 PDB 文件中嵌入带有所有注释的完整源代码。
免费的JetBrains dotPeek反编译器使用此 Blob 来显示反编译的代码。检查程序集 -> 元数据 -> 便携式 PDB 元数据 -> CustomDebugInformation -> 种类:guid 0003 0E8A571B-6926-466E-B4AD-8AB04611F5FE(嵌入式源)。