转载地址
http://www.cnblogs.com/xuanhun/archive/2010/11/21/1882941.html
工具你可以搜索一下,我如果有时间的话可以整理下发上来。
关于混淆后为什么还能正确执行?
如果你仔细看文章的话,我需要讲两点:
1.混淆是在IL层面进行的,代码混淆必须保证IL代码能正确运行,这是前提。流程混淆为例,不是随意打乱就OK了,二是要用跳转语句保证程序能像混淆之前那样走正确的流程。就像我们要执行1+1=2,然后把它变成“if(1==1){1+1=2}”,这就是混淆。
2.混淆的目的是防止反编译。
论坛帖子
http://topic.csdn.net/u/20101122/22/e4b8a016-b724-47fa-af18-4ad68bdb49d8.html?5149