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

有帮助吗?

解决方案

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

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

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

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

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

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

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

其他提示

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

Mono.Cecil 是一款非常棒的工具,如ASM。这是Mono的子项目,完全开源。它甚至提供更好的功能比System.Reflection。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top