最近一直做安全方面的业务,有一些理解总结一下
安全防护的有效方式
1.混淆 ★★★★★
最有用的方式之一,必须要做,
a.注意配置字典,最好不要用特殊字符,jadx反混淆之后,特殊字符会很被改写,最好是oO0、I1i这样的字典,github有很多,
b.形参混淆,局部变量混淆,这些东西默认是不会被混淆的,需要人工来做
2.加固 ★★★
免费的加固,基本上不管您是哪一家,都是白给,脱壳和加壳的技术一直是在对抗发展,但是免费的壳,用处十分有限,
现在的youpk方案脱壳机,对于免费壳都是一键通杀。vmp企业壳就不谈了,那个很安全了。
3.字符串加密 ★★★★★
字符串分析是者最重要的手段
有很多dex字符加密工具,比如stringfog,armPro,小纸片,等等都有,但是基本上也就防一下萌新
MT2的一键解密就可以把他们干掉了,
目前靠谱的字符串加密方案,还是本地直接用rsa公钥加密后的字符串,(自己代码可读的字符串就已经时乱码了)通过服务器下发加密后的rsa私钥,然后解密执行
内存不要保留真实的rsa私钥,而是保存加密后的rsa私钥,解密放在so层,并且so加固
4.so加固 ★★★★
主要是ollvm,地址,so不使用ollvm,就像java代码不混淆,
一般so加固都比较贵的,免费的有小密盾,但是免费的,能抵抗一部分者
5.dex2c,java2c ★★★
把java代码,转成c代码调用执行,者看到的就是空方法,真实代码在执行时回填。加固厂商有提供的 arm 小纸片都有提供,会影响一些执行效率
6.虚假控制流 ★★★★
有免费提供的,小纸片 。有收费的MT2,MT2的方式呢配置比较方便,确实处理之后,代码逆向后的可读性大大降低。
7.签名校验 ★★★★
这个不好做,不管你做到java层,c层,都是能的,不过可以加上抵抗一会儿
8.风控策略 ★★★
主要就是针对者的假动作,比如
a.代码中检测自己apk安装包的md5,接口上报,(注意加密)
b.如果md5不正确,就随机退出,或者随机异常,重要的是随机,比如我发现你在我程序,我1分15秒后给你闪退。你能查出来原因不
其他策略比如root vpn 模拟器 xposed 等检测都可以用上,看自己喜欢