1

我正在学习伊利诺伊州。

我喜欢 RedGate 的 .Net Reflector 工具(最初是 Lutz)。我已经有了 Serge Lidin 和 Ecma-335 的书。看起来这些东西就是我们必须使用 IL 的全部内容(当然,除了 ILAsm 和 ILDasm)。

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

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

单声道塞西尔做同样的事情吗?即使是这样,我也想知道该怎么做。

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

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

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

谢谢你。

4

2 回答 2

3

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

事实上,有一个名为Cecil.Decompiler的项目正在进行中,来自Jb Evain,它基于 Cecil,它是一个开源的 .NET 反编译器。

于 2009-08-25T15:15:22.797 回答
0

你可以ildasm直接使用:

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

它可以在您的程序中实现自动化。

于 2009-08-25T15:10:51.653 回答