什么CLR/.NET字节码工具存在?


7

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

2

字节码是一种二进制格式。 .NET程序集在存储执行指令方面的工作方式非常不同。而不是编译成类似字节码的结构,而是将.NET语言编译为中间语言(实际上,它只是称为IL)。

这是一种人类可读的语言,看起来很像一个面向对象的汇编器版本。

因此,在检查或操纵单个装配件的IL方面,反射器和ILDASM等工具使您可以方便地查看任何装配件的IL。

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

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

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

+8

“NET程序集在工作方式存储执行指令方面有很大不同”不,他们不......一切都最终编译成“二进制格式” 。这种二进制格式与IL有1对1的对应关系。 06 8月. 092009-08-06 09:53:04


4

ILDASMReflector想到了。


14

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


7

Mono.Cecil是一个很棒的工具,如ASM。这是Mono的一个子项目,完全开源。它甚至提供了比System.Reflection更高的better feature


1

NDepend允许您执行.NET程序集静态分析(代码度量,依赖关系分析等)。 NDepend对于使用依赖矩阵,依赖关系图和树图度量visualizations来获得.NET程序集结构的概述非常有用。例如,您可以分别使用类型/方法Rank metric(与Google Page Rank类似的代码度量)来检测程序集中的重要类型和方法,并直接从NDepend跳转到Reflector获取反汇编代码在C#,VB.NET等