2009-08-25 53 views
1

我正在研究IL。从DLL二进制文件获取IL代码

我喜欢RedGate的.Net Reflector工具(最初是Lutz)。我已经有Serge Lidin和Ecma-335的书。看起来这些东西都是我们必须和IL一起工作的(当然除了ILAsm和ILDasm之外)。

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

利丁的书描述了它,但它不是100%对我来说很清楚。有没有人试图解析DLL作为字节流?要将元数据和IL代码作为字节流,然后解析IL字节流以获取IL源?我不想在这里使用反思;我只想用二进制文件工作,而是。

单塞西尔是否也一样?即使如此,我也想知道如何去做。

是的,我想创造另一轮像.net反射的,我想知道它是如何做。就像有人说:“卢茨不一定是世界上唯一知道如何制造它的人”。

顺便说一句,ISDasm如何工作?它是用.net编码的吗?

任何想法,资源,例子?

谢谢。

回答

3

Mono.Cecil完全符合您的要求。所以,你可能想看看源代码。

实际上,有一个正在进行的项目,名为Cecil.Decompiler,从Jb Evain开始,基于Cecil的开源.NET反编译器。

+0

你知道我可以在哪里下载源代码?以下URL http://anonsvn.mono-project.com/source/trunk/cecil/decompiler不适用于我。 谢谢。 – Antipod

+0

好吧,它似乎工作。我可以请你重试吗? –

+0

是的,它现在有效。谢谢。 – Antipod

0

你可以ildasm直接使用:

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

它可以从你的程序中实现自动化。

+0

想象一下,我想写我自己的ildasm.exe。只是为了更好地理解IL和DLL结构。 – Antipod

相关问题