我的项目中某一部分信息比较敏感,但是.Net程序反编译之后连注释都看得到。需要把exe保护起来,如:代码混淆之后再加壳。
Bing到一款.Net混淆工具 ILProtector 作为资深工具党,先"拿来主义"体验体验。本篇主要介绍工具使用
1.加密前的exe,反编译之后什么都有
2.用ILProtector加密,参考官网介绍 http://www.vgrsoft.net/Products/ILProtector
原理是把.Net的中间语言MSIL代码 转换成特殊的代码,只有他自己可以识别,其他工具如 IL DASM, .NET Reflector, ILSpy, dotPeek 不能够识别出来,因此达到防逆向目的。
支持 .NET Framework 2.0, 3.0, 3.5, 4, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2
支持 Windows x32/x64
使用也比较简单,直接拖程序到 Assemblies中,
这里会生成两个DLL到文件夹中,至于dll的名字无所谓写什么,后面可以使用工具合并成一个exe
EnableIntegr 设置为True,启动的时候回检测程序是否被人修改,如果别人修改了就不能用了。
EncryptStrings 设置为True,否则你的String类型的常量不会被加密
这里是IDE安装的位置,程序自动检测的。如果有报错,来这里看下是否路径不对
总的来说是傻瓜化操作,托程序进来,填写输出路径,点Process即可
3.看混淆后的结果
方法已经是完全看不懂了,常量也被加密码了,达到了预期效果。
官网介绍的一些限制条件:
C++/CLI混合编码的程序集、类构造函数、泛型以及__arglist关键字方法 可以考虑编码中避开这些限制。
4.写在最后
世界上没有最锋利的矛,也没有最坚固的盾。靠混淆、加壳等也做不到100%防逆向。客户端只能是通过手段制造逆向的难度。
安全的思路还是:验证等逻辑放在服务端处理,只返回给客户端验证结果。