几年前我为客户编写了一个C#应用程序,但我不再拥有源代码.我所拥有的只是我在客户端PC上部署的EXE.有没有办法从EXE生成C#源代码?
Reflector及其加载项FileDisassembler.
Reflector将允许查看源代码.FileDisassembler允许您将其转换为VS解决方案.
当Red Gate说不再有.Net Reflector的免费版本时,我开始使用ILSpy和Telerik的JustDecompile.我发现ILSpy比JustDecompile(仍处于Beta版)更准确地反编译.红门已经改变了他们的决定,仍然有.Net Reflector的免费版本,但现在我喜欢ILSpy.
来自ILSpy网站(http://www.ilspy.net/):
ILSpy是开源.NET程序集浏览器和反编译器.
装配浏览
IL反汇编
反编译为C#
支持lambdas和'收益率'
显示XML文档
节省资源
搜索类型/方法/属性(子串)
基于超链接的类型/方法/属性导航
基础/派生类型导航
导航历史
BAML到XAML反编译器
将程序集另存为C#项目
查找字段/方法的用法
可扩展的插件(MEF)
更新:
2012年4月15日,ILSpy 2.0发布.与1.0版相比的新功能:
装配清单
支持反编译表达式树
支持在nullables上提升操作员
反编译为Visual Basic
搜索由空格分隔的多个字符串(在ILSpy.exe中搜索"Assembly manager"会找到AssemblyListManager)
单击局部变量将突出显示该变量的所有其他事件
Ctrl + F可用于在反编译代码视图中进行搜索
更新:
ILSpy 2.1支持异步/等待反编译
Reflector一般不再免费,但他们确实免费向开源开发人员提供:http: //reflectorblog.red-gate.com/2013/07/open-source/
但是像DevExtras和JetBrains这样的公司创造了免费的替代品:
DevExtras CodeReflect
JetBrains DotPeek
Denis Bauer的Reflector和File Disassembler插件.它实际上是从程序集生成源项目,其中Reflector本身只显示反汇编的源代码.
ADDED:我最近的最爱是JetBrains的dotPeek.
Telerik JustDecompile是免费的,具有从.NET程序集创建项目的功能.
我很惊讶没人提到微软的ildasm.它可能不如ILSpy或Reflector那么漂亮,但它随Visual Studio一起提供,因此许多开发人员已经拥有它.
运行它(假设VS 2013,其他版本应该类似):
选择"开始">"所有程序">"Visual Studio 2013">"Visual Studio工具".
双击VS2013的开发人员命令提示符.
从生成的命令提示符运行"ildasm".
在该工具中,选择"文件">"打开",然后打开可执行文件或DLL.
现在您可以导航DLL结构.双击类成员以查看IL.使用"文件">"转储"将IL导出到文件.
你想要反射器.