dotPeek 2023是一款基于 ReSharper 捆绑反编译器的免费独立工具。这款反编译器支持包括库 (.dll)、可执行文件 (.exe) 和 Windows 元数据文件 (.winmd) 在内的多种格式。反编译后的代码可以另存为Visual Studio项目(.csproj),如果需要从旧程序集恢复丢失的源代码,此举可以节省大量时间。除此之外,dotPeek 2023从ReSharper继承了大量功能,包括上下文和上下文非敏感导航、用法搜索以及不同的代码结构和层次结构视图。JetBrains dotPeek软件支持所有版本的.NET程序和C#程序,为用户提供了最佳的.NET反编译方案。
![](https://img.datuzi.com/pic/20231220/80ef690f0b6713fed3bc5d707498d13e.jpg)
软件特色
1、库、可执行文件以及更多
dotPeek 支持多种格式,例如库 (.dll)、可执行文件 (.exe) 和元数据文件 (.winmd)。
dotPeek 也可以反编译 .baml 文件,让您能够重建 XAML UI 定义。
除了传统的程序集和可执行文件,您还可以使用 dotPeek 打开存档(.zip、.vsix 或 .nupkg)和文件夹。 您还可以查找并从任意在线包源加载 NuGet 包(及其依赖项),或者加载 Visual Studio 项目的 packages.config 文件中列出的包。
![](https://img.datuzi.com/pic/20231220/35a43225f368afe05bef348f27bb368e.jpg)
2、查看源代码是否可用
反编译代码聊胜于无,不过有时您可以将程序集与它的源代码相匹配,那么为什么不利用这一点呢? dotPeek 可以根据 PDB 文件识别本地源代码,或者从 Microsoft Reference Source Center 或 SymbolSource.org 等源服务器中获取源代码。 此外,dotPeek 可以生成 PDB 文件。
使用菜单栏中的导航模式下拉列表来选择您只想要 dotPeek 反编译程序集,还是尝试查找源代码(如果可能)。
![](https://img.datuzi.com/pic/20231220/a4236dc562700ed90b2cceaef92952a7.jpg)
3、显示或隐藏编译器生成的代码
您可以选择显示某些编译器转换,从而使 dotPeek 显示的代码结构与编译器转换后的代码结构非常相似。 这有助于了解编译器如何处理 lambda、闭包和自动属性等对象。
![](https://img.datuzi.com/pic/20231220/e176a6247b1e2eba6b7ceb7e5f9df73a.jpg)
4、探索正在运行的进程
Process Explorer 窗口可以显示当前正在运行的所有进程的列表,并且可以探索进程的模块以及对其中的 .NET 程序集进行反编译。 您可以选择显示或隐藏原生进程和模块,或者打开进程层次结构视图。
筛选列表以查找您正在寻找的模块或进程,然后将其程序集添加到Assembly Explorer中进行更深入的调查。
![](https://img.datuzi.com/pic/20231220/0b0b5e486bc5b6163451091059a4844c.jpg)
5、以单独视图查看 IL 代码
无论您何时想要在源代码以外深入了解,都可以从反编译的 C# 中的任意一点导航到 IL 代码。
最简单的方法是在与主代码查看器同步的单独工具窗口中显示 IL 代码。
dotPeek 可为反编译代码和从符号文件重现的源代码显示 IL 代码。
![](https://img.datuzi.com/pic/20231220/835eaee2023d7ac89e63fcafc5dbfa8e.jpg)
6、以反编译的 C# 的注释形式查看 IL 代码
或者,您也可以选择以反编译的 C# 代码的注释形式显示 IL 代码,这实际上会将它的默认文本查看器和通常单独的 IL Viewer 窗口合并显示在一个视图中。
![](https://img.datuzi.com/pic/20231220/4fa868fbc8cd754bfffe04cfd29bd902.jpg)
7、使用您偏好的颜色主题
dotPeek 支持与 Visual Studio 相同的颜色主题集。
例如,您可以选择“蓝色”或“深色”主题,或者选择与 Visual Studio 设置同步颜色主题偏好设置。
![](https://img.datuzi.com/pic/20231220/fea05108ba48ce71952a2909dd4fb794.jpg)
dotPeek 2023新功能
1、程序集差异改进
dotPeek 2023.3 可以比较 NuGet 软件包、文件夹和 .zip 文件。
用于比较程序集的功能现在具有更多比较选项。 您可以选择多种不同的模式(Show all(全部显示)、Show only differences(仅显示差异)、Show only signature differences(仅显示签名差异)、Show only public API differences(仅显示公共 API 差异))。 此外,您还可以指定是否希望该差异忽略成员/特性顺序差异以及可以为 null 的引用类型的注解中的差异。
![](https://img.datuzi.com/pic/20231220/743356a7b73ec8784de1924d99ca9066.jpg)
2、Assembly Explorer
在 Assembly Explorer 中浏览 NuGet 软件包时,您现在可以查看这些 NuGet 软件包中包含的所有文件和文件夹。
现在可以在节点表示树和 Properties(属性)窗格中查看 Win32 资源节点,包括大小和类型(如果可以确定)。
![](https://img.datuzi.com/pic/20231220/bbb6085413814e7ee92b4ff54871981b.jpg)
3、程序集差异
dotPeek 2023.2 提供了详细比较两个程序集的方法。 仔细检查特定程序集两个版本之间的差异并搜索较新版本中可能引入的潜在漏洞时,这个功能特别实用。
![](https://img.datuzi.com/pic/20231220/e01ba3eb170a051fc48658bf8602f01f.jpg)
4、IL Viewer 工具窗口
2023.1 版本的 dotPeek 包含以下针对 IL Viewer 工具窗口的改进:
在低级和高级 C# 代码中,IL Viewer 会按照在原始源代码中使用的方式显示变量名称,而在高级 C# 代码中,它还会显示局部变量的原始元组元素名称。
注释的元组元素名称将从 PDB/反编译器渲染,用于中间语言 (IL) 代码中的局部变量声明。
字段和属性初始值设定项、迭代器内语句、async 方法、lambda、局部函数以及高级 C# 的局部函数和嵌套局部函数声明的同步已得到改进。
![](https://img.datuzi.com/pic/20231220/c39eb9eb2aec5933f95fbb8caf4ceb41.jpg)
5、其他更新
现在引入了解码 Win32 字符串表资源的功能。
dotPeek 现在可以在程序集/非程序集、捆绑包中的文件、归档、NuGet 软件包、比较的程序集和 Win32 资源的 Properties(属性)窗格中显示所打开文件的大小。
现在可以验证程序集 authenticode 签名。
显式 #nullable disable 指令显示在反编译的源代码中。