最近在网上看一些关于.Net下程序集加密解密的资料,在“紫雨轩 .Net”的blog上看到几篇关于如何在内存中dump一个程序集中的所有类型和方法的IL源代码的介绍,地址如下:
[url]http://www.cnblogs.com/rick/archive/2006/09/14/504525.html[/url]
[url]http://www.cnblogs.com/rick/archive/2006/09/28/517603.html[/url]
作者的思路非常好,任何程序集在内存中肯定都有自己的IL源代码的,通过反射的方式肯定能得到,但作者在文章中对exe的dump说要通过dll注入来实现(在vs中不能直接reference一个exe),而且还没有提供注入的方法和代码。
其实不需要这么麻烦(我只知道win32下的dll注入,有点麻烦),既然.net framework提供了反射机制,那为什么一定要直接在项目中reference进一个程序集后才能对它dump呢?直接通过反射把程序集载入不是更方便?通过反射动态加载进一个exe的程序集是没问题的,我在原作者的代码上稍微改了下,并用一个exe程序集测试通过,代码如下: