我非常了解用于操作、生成、反编译 JVM 字节码(ASM、cglib、jad 等)的 Java 工具。CLR 字节码有哪些类似的工具?人们是否为 CLR 进行字节码操作?
5 回答
Reflector 总是很好,但 Mono.Cecil 是您可能要求的最好的工具。它对于以任何方式操纵 CIL 都是非常宝贵的。
Mono.Cecil是像 ASM 一样的出色工具。它是 Mono 的一个子项目,并且完全开源。它甚至提供比 System.Reflection更好的功能。
我想到了ILDASM和Reflector 。
字节码是一种二进制格式。.NET 程序集在存储执行指令的方式上大不相同。
.NET 语言不是编译成类似字节码的结构,而是编译成一种中间语言(实际上,它只是被称为--IL)。
这是一种人类可读的语言,看起来有点像面向对象的汇编程序版本。
因此,在检查或操作单个程序集的 IL 方面,Reflector 和 ILDASM 等工具允许您方便地查看任何程序集的 IL。
操作有点不同,我建议看看 .NET 空间中的一些 AOP 工具。我还建议看看 Phoenix,这是 MS 正在开发的一个编译器项目。它有一些非常酷的编译后操作功能。
如果您想了解更多关于 .NET AOP 工具的信息,我建议您提出另一个问题(那是完全不同的蠕虫罐头)。
还有几本书会教你 IL 的来龙去脉。这不是一门非常复杂的语言。
NDepend允许您进行 .NET 程序集静态分析(代码指标、依赖性分析等)。NDepend 对于使用依赖矩阵、依赖图和树状图度量可视化来了解 .NET 程序集的结构非常有用。
它还与 Reflector 集成:例如,您可以分别使用 Type/Method Rank 度量(类似于 Google Page Rank 的代码度量)检测程序集中的重要类型和方法,并直接从 NDepend 跳转到 Reflector 以获取反汇编C#、VB.NET 等中的代码