最近一直做安全方面的业务,有一些理解总结一下

安全防护的有效方式

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 等检测都可以用上,看自己喜欢