几年前,我为客户编写了一个 C# 应用程序,但我不再拥有源代码。我所拥有的只是我在客户端 PC 上部署的 EXE。有没有办法可以从 EXE 生成 C# 源代码?
8 回答
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 这样的一些公司已经创建了免费的替代品:
Denis Bauer的 Reflector 和File Disassembler插件。它实际上从程序集中生成源项目,其中 Reflector 仅显示反汇编的源。
补充:我最近最喜欢的是 JetBrains 的dotPeek。
Telerik JustDecompile是免费的,并且具有从 .NET 程序集创建项目的功能。
我很惊讶没有人提到微软的ildasm。它可能不如 ILSpy 或 Reflector 漂亮,但它与 Visual Studio 一起提供,因此许多开发人员已经拥有它。
要运行它(假设 VS 2013,其他版本应该类似):
- 选择开始 > 所有程序 > Visual Studio 2013 > Visual Studio 工具。
- 双击 VS2013 的开发人员命令提示符。
- 从生成的命令提示符处运行“ildasm”。
- 在该工具中,选择文件 > 打开并打开您的可执行文件或 DLL。
现在您可以浏览 DLL 结构。双击班级成员以查看 IL。使用 File > Dump 将 IL 导出到文件。
你想要反光板。
我很惊讶没有人提到dnSpy。dnSpy是一个调试器和 .NET 程序集编辑器。即使您没有任何可用的源代码,您也可以使用它来编辑和调试程序集。
主要特点:
- 调试 .NET 和 Unity 程序集
- 编辑 .NET 和 Unity 程序集
- 明暗主题
它是开源的,也是使用最广泛的点网逆向工程工具之一。