代码之家  ›  专栏  ›  技术社区  ›  Antipod

从dll二进制文件获取IL代码

  •  1
  • Antipod  · 技术社区  · 16 年前

    我正在攻读伊利诺伊州。

    我喜欢Redgate的.NET Reflector工具(最初是lutz)。我已经有SergeLidins和ECMA-335的书了。看起来我们只需要和IL一起工作(当然,除了ILASM和ILDASM)。

    我的任务是解析程序集二进制文件并获取IL代码。很明显,程序集是一个二进制文件;因此,它只是一个字节链。为了做我想做的事情,我需要知道程序集结构:存在哪些头文件,它们占用了多少字节,以字节为单位的偏移量来逐个字节地读取它,等等。

    Lidins的书描述了这一点,但我并不完全清楚。有人试图将dll解析为字节流吗?将元数据和IL代码作为字节流,然后解析IL字节流以获取IL源?我不想在这里使用反射;我只想使用二进制文件。

    单盲肠也一样吗?即使如此,我也想知道怎么做。

    是的,我正在尝试创建另一个类似于.NET Reflector的轮子,我想知道它是如何制作的。就像有人说的:卢茨不一定是世界上唯一知道如何做到的人。

    顺便问一下,isdam是如何工作的?它是用.NET编码的吗?

    有什么想法,资源,例子吗?

    谢谢您。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Romain Verdier    16 年前

    莫诺。塞西尔做的正是你想做的。因此,您可能需要查看源代码。

    事实上,有一个正在进行的项目名为 Cecil.Decompiler ,从 Jb Evain 基于Cecil的顶部,它是一个开源的.NET反编译程序。

        2
  •  0
  •   Darin Dimitrov    16 年前

    你可以使用 ildasm 直接:

    ildasm.exe MyFile.dll /output:MyFile.il
    

    它可以从您的程序中自动化。