我需要编写一个相对较小的程序来解析 .net 可执行文件并生成对外部方法的调用列表。例如,如果System.Console.WriteLine
在文件中调用该工具应该打印在System.Console.WriteLine
某处调用的。我不能(有限的大脑和时间)也不需要(我只需要一个调用列表)实现真正的反汇编。我想要一个grep 友好的 perl 友好的相对较短的解决方案,它写入调用的函数的名称和调用发生的偏移量。
我已经尝试过的事情:
从 MSDN 下载规范。现在我知道静态调用被翻译成
0x28
字节码。:) 后面是方法描述符,但理解方法描述符的含义可能需要阅读整个规范。在 Reflector 中打开简单的 exe。Reflector 精确地复制了我的原始应用程序的代码,但我看不到调用的字节码。
是否可以用有限的时间和知识实现所需的有限功能?
如果是这样,我知道如何实施它?是否有任何“CIL 傻瓜组装”指南?