一、高权限滥用以及设备和网络滥用:
- Android权限列表:developer.android.com/reference/a…
- 找出代码中Protection level: dangerous标记的权限,删除。
- 后续提高保活能力和页面打开能力。需要的危险权限要添加对应的功能项
- support.google.com/googleplay/… googleplay规定的隐私权限滥用内容。
二、风险代码反射实现
- 初始方案:保活能力+页面打开jni实现。
- chatgpt确认风险点。jni加密肯定会查,反射可能会查
- 最终确定。反射实现风险代码。具体步骤:
-
- 实例对象类反射创建
- 每个方法反射实现
- 过程中设计的类名全路径,方法名,加密后放到c++
三、降低代码重复率
- 加入垃圾代码。
-
- 动态。gradle脚本执行,重复度依据代码量配置添加
- 静态。垃圾代码可配置。寻找生成工具。
- 代码重复率检测:jplag工具使用(参考github地址:github.com/jplag/JPlag
- 混淆字典
-
- python脚本生成。每次打包前更换混淆字典
- 收集变态混淆字典。为马甲包做准备
- 代码每次上线更改包和类名。xmlguard 脚本使用
四.增加逆向难度
- 加固对谷歌应用市场上架意义不大
- jni代码谷歌会检查。只能用来存放一些常量加密字符串。其中包括:
-
-
日志类加密字符串。
-
功能类类名,全路径包名、方法名(四大组件即相关的方法名)
-
谷歌规定的不安全的加密方式,整改参考地址:support.google.com/faqs/answer…
-
jni代码混淆。需要配置ollvm环境编译Android的ndk设计混淆的so库。主要是clang.so的生成
-
五.禁止出现中文字符
六.场景广告页面打开采用随机类
- python脚本批量生成随机类文件,生成后Manifest.xml批量注册
七.针对google不安全加密问题的解决方法:接口返回加密密钥以及反射用到的相关string,加密类完全使用反射来实现;参考support.google.com/faqs/answer…
八.风险代码设置依赖归因开关
九.保活修改
采用弱保活。去除文件锁。jni代码被标记。禁止使用
账号同步功能。冗余兼容功能删除。一像素页面低版本兼容
去除provider进程