几年前,我为一个客户端编写了一个C#应用程序,但是我不再拥有源代码。我所拥有的只是我在客户端PC上部署的EXE。有没有办法可以从EXE生成C#源代码?
几年前,我为一个客户端编写了一个C#应用程序,但是我不再拥有源代码。我所拥有的只是我在客户端PC上部署的EXE。有没有办法可以从EXE生成C#源代码?
Answers:
Reflector及其附加FileDisassembler。
Reflector将允许查看源代码。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程序集浏览器和反编译器。
更新:
2012年4月15日,ILSpy 2.0发布。与1.0版相比的新功能:
更新:
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,其他版本应该与此类似):
现在,您可以浏览DLL结构。双击班级成员以查看IL。使用文件>转储将IL导出到文件。