我正在研究IL。
我喜欢RedGate的.Net Reflector工具(最初是Lutz)。我已经有Serge Lidin和Ecma-335书籍。看起来这些东西都是我们必须使用IL(当然除了ILAsm和ILDasm)。
我的任务是解析汇编二进制文件并获取IL代码。很明显,程序集是一个二进制文件;因此,它只是一个字节链。要做我想做的事情,我需要知道汇编结构:存在哪些头,它们占用多少字节,以字节为单位的偏移量,以字节为单位读取它等等。
Lidin的书描述了它,但对我来说并非100%清楚。有没有人试图将DLL解析为字节流?要将元数据和IL代码作为字节流,然后解析IL字节流以获取IL源?我不想在这里使用反思;我想只使用二进制文件。
单声道塞西尔是否也这样做?即便如此,我也想知道该怎么做。
是的,我正在尝试创建另一个类似.NET Reflector的轮子,我想知道它是如何制作的。就像有人说:“Lutz不一定是世界上唯一知道如何制作它的人。”
顺便说一句,ISDasm如何运作?它是用.net编码的吗?任何想法,资源,例子?
谢谢。
答案 0 :(得分:3)
Mono.Cecil正是您想要做的。所以,您可能需要查看源代码。
事实上,有一个名为Cecil.Decompiler的项目,来自Jb Evain,基于Cecil,它是一个开源的.NET反编译器。
答案 1 :(得分:0)
您可以直接使用ildasm
:
ildasm.exe MyFile.dll /output:MyFile.il
它可以在您的程序中自动完成。