【发布时间】:2009-10-15 20:26:48
【问题描述】:
我需要编写一个相对较小的程序来解析 .net 可执行文件并生成对外部方法的调用列表。例如,如果在文件中调用了System.Console.WriteLine,则该工具应打印出在某处调用了System.Console.WriteLine。我不能(有限的大脑和时间)也不需要(我只需要一个调用列表)实现真正的反汇编。我想要一个 grep 友好 perl 友好 相对简短的解决方案,它写入调用的函数的名称和调用发生的偏移量。
我已经尝试过的事情:
从 MSDN 下载规范。 现在我知道静态调用被翻译成字节码中的
0x28。 :) 后面是方法描述符,但理解方法描述符的含义可能需要阅读整个规范。在 Reflector 中打开简单的 exe。 Reflector 精确地复制了我原始应用程序的代码,但我看不到调用的字节码。
是否有可能在有限的时间和知识的情况下实现所需的有限功能?
如果是这样,我知道如何实施它?有没有“CIL 傻瓜组装”指南?
【问题讨论】:
-
在反射器中,您可以对一个方法进行“分析”,并从其他加载的程序集中找出它在哪里使用(调用)。走向另一个我不确定的方向......
-
谢谢,Agent_9191,我错过了。
-
Analyze 实际上并没有显示使用它的字节码。它显示了所有使用过的调用的依赖关系列表,但依赖关系列表没有说明调用相对于 exe 文件开头的位置,也没有说明负责实际调用的字节码片段。
标签: .net reflector disassembly cil