繁体   English   中英

如何将 .NET EXE 反编译为可读的 C# 源代码?

[英]How do I decompile a .NET EXE into readable C# source code?

几年前我为一个客户写了一个 C# 的应用程序,但我已经没有源代码了。 我所拥有的只是部署在客户 PC 上的 EXE。 有没有办法从 EXE 生成 C# 源代码?

Reflector及其插件FileDisassembler

反射器将允许查看源代码。 FileDisassembler 将允许您将其转换为 VS 解决方案。

当 Red Gate 说不再有免费版本的 .Net Reflector 时,我开始使用ILSpy和 Telerik 的JustDecompile 我发现 ILSpy 比 JustDecompile(仍处于 Beta 版)更准确地反编译。 Red Gate 改变了他们的决定,仍然有一个免费版本的 .Net Reflector,但现在我喜欢 ILSpy。

从 ILSpy 网站( https://github.com/icsharpcode/ILSpy/ ):

ILSpy是开源的 .NET 程序集浏览器和反编译器。

ILSpy 功能

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

更新:

2012年4月15日,ILSpy 2.0发布。 与 1.0 版相比的新特性:

  • 装配清单
  • 支持反编译表达式树
  • 支持可空值的提升运算符
  • 反编译为 Visual Basic
  • 搜索以空格分隔的多个字符串(在ILSpy.exe 中搜索“Assembly manager”会找到AssemblyListManager)
  • 单击局部变量将突出显示该变量的所有其他出现
  • Ctrl+F 可用于在反编译代码视图中进行搜索

更新:

  • ILSpy 2.1 支持 async/await 反编译

Reflector 通常不再免费,但他们确实向开源开发人员免费提供: http : //reflectorblog.red-gate.com/2013/07/open-source/

但是像 DevExtras 和 JetBrains 这样的一些公司已经创建了免费的替代品:

DevExtras CodeReflect

JetBrains DotPeek

Reflector 和来自 Denis Bauer 的File Disassembler插件。 它实际上从程序集生成源项目,其中 Reflector 本身仅显示反汇编的源。

补充:我最近最喜欢的是 JetBrains 的dotPeek

Telerik JustDecompile是免费的,并且具有从 .NET 程序集创建项目的功能。

我很惊讶没有人提到微软的ildasm 它可能不如 ILSpy 或 Reflector 漂亮,但它随 Visual Studio 一起提供,因此许多开发人员已经拥有它。

运行它(假设 VS 2013,其他版本应该类似):

  1. 选择开始 > 所有程序 > Visual Studio 2013 > Visual Studio 工具。
  2. 双击 VS2013 的开发人员命令提示符。
  3. 从结果命令提示符运行“ildasm”。
  4. 在该工具中,选择文件 > 打开并打开您的可执行文件或 DLL。

现在您可以浏览 DLL 结构。 双击班级成员以查看 IL。 使用 File > Dump 将 IL 导出到文件。

你想要反射器

现在有各种 .NET / C# 反编译器可用(2022):

我更喜欢 ILSpy,因为它是免费的,OSS,非常快(与其他软件相比),维护得很好,它甚至被 Visual Studio 使用,并且反编译代码是准确的。 这篇博文在 .NET 反编译器的丛林中详细解释了所有这些 .NET 反编译器。

我很惊讶没有人提到dnSpy dnSpy是一个调试器和 .NET 程序集编辑器。 即使您没有任何可用的源代码,您也可以使用它来编辑和调试程序集。

主要特点:

  • 调试 .NET 和 Unity 程序集
  • 编辑 .NET 和 Unity 程序集
  • 明暗主题

它是开源的,也是 dot net 中使用最广泛的逆向工程工具之一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM