8

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

4

5 回答 5

14

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

于 2008-09-23T20:39:30.613 回答
7

Mono.Cecil是像 ASM 一样的出色工具。它是 Mono 的一个子项目,并且完全开源。它甚至提供比 System.Reflection更好的功能。

于 2008-12-18T16:34:26.917 回答
4

我想到了ILDASMReflector 。

于 2008-09-23T20:38:19.057 回答
2

字节码是一种二进制格式。.NET 程序集在存储执行指令的方式上大不相同。

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

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

因此,在检查或操作单个程序集的 IL 方面,Reflector 和 ILDASM 等工具允许您方便地查看任何程序集的 IL。

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

如果您想了解更多关于 .NET AOP 工具的信息,我建议您提出另一个问题(那是完全不同的蠕虫罐头)。

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

于 2008-09-23T20:43:42.897 回答
1

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

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

于 2010-05-06T10:27:57.867 回答