以前发布的手游都没做过什么安全保护处理,随着用户数的积累,一些安全问题也逐渐饺咛百柘显露出来。比如有用户投诉有外挂存在,投诉手游被杀毒咻羿绅恐软件暴病毒等等,遭遇这些问题,内心是崩溃的。为了避免类似的情况发生,我们公司选择了一款Unity3D手游加密工具,主要需求是:DLL文件保护、防内存挂、防系统加速挂、防二次打包和反调试。
工具/原料
安卓APK离线加密工具
无法添加链接,百度搜索“几维安全”了解该工具
方法/步骤
1、APK离线加密工具是付费的,我们公司咸犴孜稍先体验了几维安全提供的在线免费加密服务,之后决定购买的付费版本。付费版本相比免费版本:DLL加密是函数级方案而紧鋈笆珀不是整体级加密,另外有内存保护、防系统加速和反调试功能。(免费版:注册&登录几维防御平台即可使用)
2、获取加密工具包后,解压&运行ApkEncryptTool.exe,启动界面下图。该加密工具支持批量加密apk文件,将需要加密的apk文件统一放到一个文件夹中,并选择该文件夹。
3、首先用正式签名文件对APK包签名,然后选择APK所在的文件夹,点击开始加固即可。(请不要重复加密apk,那样会造成加密失败或运行失败,同时确保未使用过其他加密工具)
4、耐心等待加密完成,加密完成后会在相应目录下生成一个以.kws.apk结尾的同名文件。接下来只需要用之前的签名文件签名即可。
5、将加密后的手游APK包安装到手机上测试,一切正常!并上传到几维防御平台对手游进行安全评估,其得分为94分,查看报告详情,之前考虑的几个安全点都已得到保护。
6、为了近一步检验加密效果,我用其他签名文件对加密后的手游APK进行签名,测试结果,手游启动时闪退,防二次打包测试通过。
7、检测DLL文件是否加密成功,使用.NETReflector工具对Assembly-CSharp.dll进行反编译,测试结果:反编译失败,DLL文件保护测试通过
8、官方说DLL加密主要是自定义Unity3d解析引擎水貔藻疽,为此我在IDA中分析了libmono.so和libunity.so动态字羿岚寺库,发现这两个动态库都有做加壳保护,在进一步分析过程中,发现加密代码自身又有安全防护。至此,我放弃了分析,SO加壳保护测试通过!