一个 .net 反汇编器/反编译器

26

我正在寻找一款 .net 的反汇编工具或更好的反编译工具。情况是,我的前任写的一个程序集的源代码丢失了,我想看一下它在做什么。

我知道 Visual Studio 安装附带了 ildasm,因此我可以获取 MSIL,但我希望有一款聪明到足以反向转换成 C# 代码(或最佳近似)的程序。

有这样的工具吗?

(如果没有,我想这将是一个很好的借口让我坐下来开始学习 MSIL)

6个回答

55

1
刚试用了ILSpy beta版,对我来说它和Reflector一样好。减少了许可证的麻烦。 - David Schmitt
dotPeek是一个评估版本--看起来几乎和Reflector一样好,但似乎运行速度稍微慢了一些。ILSpy对我来说已经足够了,尽管它的界面不太流畅--成员排序和泛型处理都有待改进,但已经足够好了,特别是在价格方面! - yoyo
2
从2012年开始,dotPeek现在完全免费,不再是试用版。 - Scott Chamberlain

40

虽然我想同意annakata的观点,但显然他/她是错的。Reflector = 双倍棒! :) - Russ
6
红门最初并没有编写Reflector。我使用过他们的另一个工具(针对SQL Server 2005的SQL Intellisense),但是它运行缓慢。 :) - mmcdole
11
不再自由。 - Tarion

7
Reflector是更好的选择,但如果由于某些原因无法使用该工具,则可以使用Microsoft Framework自带的反汇编器ILDasm。
如果想要了解MSIL知识,Serge Lidin的书Expert .NET 2.0 IL Assembler是一个不错的信息来源。

2


1

好的,

我试过一个项目。 ILSpy

Telerik JustDecompile

.NET Reflector Demo

所有这些工具都可以创建Visual C#项目。 生成的代码在JustDecompile和Reflector中无法编译。 在某些情况下,ILSpy生成的代码是可以编译的(只需要设置引用)。 ILSpy产生的错误看起来并不像其他工具那样复杂。 如果你足够了解C#,所有生成的代码都可以进行修复。

一个有趣的方向可以使用JustDecompile和ILSpy同时反编译代码,并合并那些正确的代码,因为这些反编译器(以及第三方反编译器)似乎会出现不同的错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接