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


当前回答

Denis Bauer的Reflector和File Disassembler插件。它实际上从程序集生成源项目,其中Reflector本身只显示被分解的源。

我最近最喜欢的是JetBrains的dotPeek。

其他回答

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

主要特点:

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

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

反射器和它的插件FileDisassembler。

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

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

但DevExtras和JetBrains等公司已经创建了免费的替代方案:

DevExtras CodeReflect

JetBrains DotPeek

Telerik JustDecompile是免费的,有一个从。net程序集创建项目的特性。

我很惊讶居然没人提到微软的“伊达姆”。它可能不像ILSpy或Reflector那样漂亮,但它随Visual Studio一起提供,因此许多开发人员已经拥有它。

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

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

现在可以导航DLL结构了。双击类成员查看IL。使用File > Dump将IL导出到一个文件。