274

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

4

8 回答 8

204

Reflector及其插件FileDisassembler

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

于 2008-10-07T18:28:00.850 回答
150

当 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 反编译
于 2011-10-05T16:38:15.137 回答
66

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

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

DevExtras 代码反射

JetBrains DotPeek

于 2011-06-07T13:40:27.127 回答
37

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

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

于 2008-10-07T18:32:08.830 回答
30

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

于 2011-08-15T19:16:00.133 回答
26

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

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

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

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

于 2015-03-24T17:24:47.757 回答
15

你想要反光板

于 2008-10-07T18:28:24.000 回答
10

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

主要特点:

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

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

于 2020-09-28T08:53:42.337 回答