有没有办法反编译 .NET 程序集或程序?

逆向工程 反编译 dll 。网 聚乙烯
2021-06-21 00:37:54

是否有任何工具可用于获取您知道是从 C# 或 Visual Basic 编译的已编译的 .dll 或 .exe 文件并从中获取原始源代码?

4个回答

ILSpy是一个很棒的开源反编译器。

ILSpy 功能

  • 装配浏览
  • IL拆解
  • 支持 C# 5.0 “异步”
  • 反编译为 C#
  • 支持 lambdas 和“收益回报”
  • 显示 XML 文档
  • 反编译为VB
  • 节约资源
  • 将反编译的程序集另存为 .csproj
  • 搜索类型/方法/属性(子字符串)
  • 基于超链接的类型/方法/属性导航
  • 基本/派生类型导航
  • 导航历史
  • BAML 到 XAML 反编译器
  • 将程序集另存为 C# 项目
  • 查找字段/方法的用法
  • 可通过插件扩展 (MEF)
  • 装配清单

我之前使用过JetBrains dotPeek(免费)并取得了一些成功。

我使用过的任何 JetBrains 软件都非常可靠。

它不是“原始源”,但它是非常易读的 C# - 大约是我期望得到的最接近的东西。从他们的网站报价:

dotPeek 有什么酷的地方?

  1. 将 .NET 1.0-4.5 程序集反编译为 C#
  2. 支持 。dll.exe.zip.vsix.nupkg,和.winmd文件
  3. 快速跳转到类型、程序集、符号或类型成员
  4. 轻松导航到符号声明、实现、派生和基本符号等
  5. 通过搜索结果的高级显示准确搜索符号使用情况
  6. 继承链概述
  7. 支持从源服务器下载代码
  8. 语法高亮
  9. 完整的键盘支持
  10. dotPeek 是免费的!

最后一点是免费的,就像免费啤酒一样,而不是言论自由。

最近我一直在使用dnSpy [由 de4dot 的创建者从 ILSpy 分叉] 作为我的主要工具,用于反编译和实时调试 .NET 代码

https://github.com/0xd4d/dnSpy


与 ILSpy 的主要区别:

  • 使用 dnLib 读取程序集(与 ILSpy 的 Mono.Cecil)

https://github.com/0xd4d/dnlib

创建 dnlib 是因为 de4dot 需要一个强大的 .NET 程序集库来处理所有类型的混淆程序集。de4dot 曾经使用 Mono.Cecil 但由于 Mono.Cecil 无法处理混淆的程序集,不完全支持混合模式程序集,不以与 CLR 相同的方式读取 .NET 程序集以及 de4dot 需要的许多其他缺少的功能,dnlib是必需品。API 是相似的,因为它使得将 de4dot 移植到 dnlib 变得更加容易。

有一个名为JustDecompile的免费工具可以做到这一点。

一些特点:

  • 从程序集创建 Visual Studio 项目,以便导出丢失的项目或获取多个类,而无需复制和粘贴代码。目前,JustDecompile 只能将反编译的代码导出到 C#。
  • 直接从命令提示符导出代码
  • 快速加载核心 .NET 程序集(.NET 2、.NET3.5、.NET 4、.NET 4.5、WinRT Metadata 和 Silverlight)
  • 直接编辑加载到程序中的程序集