419

只是想问是否有人知道RedGate 的Reflector的开源替代品?我有兴趣查看类似于 Reflector 的工具实际上是如何工作的。

请注意,如果您知道 Reflector 的免费但开源替代品,您可以回答以下相关问题:

摘要 - 2011 年 5 月 11 日更新

对建议的各种开源项目和工具的快速总结:

  1. 通用编译器基础架构(CCI)
  2. 单音塞西尔
  3. 间谍
  4. dnSpy(ILSpy 的分支,项目看起来比原始项目更活跃)
  5. Dotnet IL 编辑器 (DILE)
  6. IL.View
  7. Monoflector(自 2011 年 4 月起不再有效

以下资源可能也很有趣:

4

10 回答 10

175

2011 年 12 月 13 日更新

可以使用以下开源工具:

于 2010-03-11T15:49:58.220 回答
38

另一个替代品是dotPeek。JetBrains 宣布它为免费工具。当与他们的Resharper一起使用时,它可能会有更多的功能,但即使单独使用它也能很好地工作。

用户体验更像是 MSVS,而不是独立的反汇编程序。比起 Reflector,我更喜欢阅读代码。Ctrl+T 导航也更适合我。只需将树与代码窗格同步可能会更好。

总而言之,它仍在开发中,但已经很好用了。

于 2011-06-11T07:25:24.757 回答
31

我知道的2个选项。

  • CCI
  • 单音塞西尔

不过,这些不会给你 C#。

于 2010-03-11T15:20:56.497 回答
15

Telerik 今天发布了他们自己的反编译工具JustDecompile的 Beta 版。封闭源代码,但免费且看起来很有希望。

于 2011-05-02T17:10:35.430 回答
12

ILSpy效果很好!

据我所知,它完成了 Reflector 所做的一切,而且看起来也一样。

于 2011-07-13T18:16:02.487 回答
10

实际上,我很确定 Reflector 被认为是具有一些反编译器功能的反汇编器。反汇编程序,因为它从程序集文件中读取字节并将其转换为汇编语言(在本例中为 ILasm)。它通过将 IL 解析为众所周知的模式(如表达式和语句)来提供反编译器功能,然后将其翻译成更高级的语言,如 C#、VB.Net 等。Reflector 的插件 api 允许您编写自己的语言翻译器,如果你希望......但是它如何将 IL 解析为表达式树的魔力是一个严密保密的秘密。

如果您想了解 IL 反汇编器的工作原理,我建议您查看上面提到的三件事中的任何一件:Dile、CCI 和 Mono 都是这些东西的好来源。

我还强烈建议您购买 Ecma 335 规范和 Serge Lidin 的书。

于 2010-03-12T00:04:33.390 回答
8

我使用 Reflector 的主要原因(我认为,大多数人使用它的主要原因)是因为它的反编译器:它可以将方法的 IL 转换回源代码。

就这一点而言,Monoflector将是值得关注的项目。它使用执行反射的 Cecil 和执行反编译的 Cecil.Decompiler。但是 Monofector 在这两个库之上都分层了一个 UI,这应该让您对如何使用 API 有一个很好的了解。

Monoflector 也是 Reflector 的一个不错的替代品。它可以让您浏览类型并反编译方法,这是人们使用 Reflector 的 99%。它的边缘非常粗糙,但我认为这会很快改变。

于 2011-02-04T14:08:45.643 回答
5

好吧,Reflector 本身是一个 .NET 程序集,因此您可以在 Reflector 中打开 Reflector.exe 以查看它是如何构建的。

于 2010-03-11T15:02:28.187 回答
3

我目前正在开发一个名为 Assembly Analyzer 的开源反汇编器/反编译器。它为方法生成源代码,显示程序集元数据和资源,并允许您遍历依赖项。

该项目托管在 CodePlex => http://asmanalyzer.codeplex.com/

于 2011-05-20T18:36:54.523 回答
1

反射器工具使用反射。  - 显然这是不正确的。

您要求两件事 - 显示反射器功能的代码,以及反射器的替代品。

这是一个示例,与 Reflector 所做的相比非常简化,但它展示了反射技术: TypeView.cs

我没有建议更换开源反射器。

于 2010-03-11T15:17:18.367 回答