存在哪些CLR / .NET字节码工具?

时间:2008-09-23 20:37:32

标签: .net clr bytecode il

我非常了解用于操作,生成,反编译JVM字节码(ASM,cglib,jad等)的Java工具。 CLR字节码有哪些类似的工具?人们为CLR做字节码操作吗?

5 个答案:

答案 0 :(得分:14)

反射器总是很好,但Mono.Cecil是你可能要求的最好的工具。它以任何方式操纵CIL都是非常宝贵的。

答案 1 :(得分:7)

Mono.Cecil是一个像ASM这样的好工具。这是Mono的子项目,完全开源。它甚至比System.Reflection提供better feature

答案 2 :(得分:4)

想到了{p> ILDASMReflector

答案 3 :(得分:2)

字节码是二进制格式。 .NET程序集在存储执行指令方面的工作方式非常不同。

不是编译成类似字节码的结构,而是将.NET语言编译成中间语言(事实上,它只被称为IL)。

这是一种人类可读的语言,看起来有点像汇编程序的面向对象版本。

因此,在检查或操作各个装配体的IL时,Reflector和ILDASM等工具可以方便地查看任何装配体的IL。

操作有点不同,我建议看一下.NET空间中的一些AOP工具。我还建议看一下Phoenix,它是MS正在开发的一个编译器项目。它有一些非常酷的编译后操作功能。

如果您想了解有关.NET AOP工具的更多信息,我建议您再打开另一个问题(这是另一个问题)。

还有几本书会教你IL的来龙去脉。这不是一门非常复杂的语言。

答案 4 :(得分:1)

NDepend允许您进行.NET程序集静态分析(代码度量,依赖性分析等)。 NDepend对于使用依赖矩阵,依赖关系图和树形图指标visualizations来概述.NET程序集的结构非常有用。

它还与Reflector集成:例如,您可以分别使用类型/方法Rank metric(类似于Google页面排名的代码度量)检测程序集中的重要类型和方法,并直接从NDepend跳转到Reflector获取C#,VB.NET等中的反汇编代码。