部分反汇编.net可执行文件

时间:2009-10-15 20:26:49

标签: .net reflector disassembly cil

我需要编写一个相对较小的程序来解析.net可执行文件并生成对外部方法的调用列表。例如,如果在文件中调用System.Console.WriteLine,则工具应该打印出某个地方调用System.Console.WriteLine。我不能(有限的大脑和时间)和不需要(我只需要一个调用列表)实现真正的反汇编。我想要一个 grep friendly perl friendly 相对较短的解决方案,它会写出所调用函数的名称和调用发生的偏移量。

我已经尝试过的事情:

  1. 从MSDN下载规范。 现在我知道静态调用在字节码中被转换为0x28。 :)接下来是方法描述符,但是理解方法描述符的含义可能需要阅读整个规范。

  2. 在Reflector中打开简单的exe。 反射器精确地复制了我原始应用程序的代码,但我看不到调用的字节码。

  3. 是否有可能在有限的时间和知识下实现所需的有限功能?

    如果是这样,我知道如何实施它?有没有“CIL汇编傻瓜”指南?

3 个答案:

答案 0 :(得分:4)

Ceci l项目是一个完全按照你想要做的库。

答案 1 :(得分:2)

如果你想要一些grep / perl-friendly,请使用ildasm(在命令行模式下,即带/ out或/ text)将字节代码反汇编为文本IL。然后,您可以使用grep,perl或您选择的语言来查找呼叫说明。 (grep可能不足以确定调用指令所在的方法,但perl应该能够。)

答案 2 :(得分:1)

Common Compiler Infrastructure也可以为您提供帮助:http://ccimetadata.codeplex.com/

我会支持itowlson建议将程序集反汇编成.il文件并使用grep解析它,如果这是你正在寻找的。由于ILDasm将显示所有类型的完整命名空间,因此如果它是您的类型或引用类型,您应该能够快速找出它。

相关问题