🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] # 整体方案 ## 背景 * 用户同意隐私协议之前,不能有收集用户隐私信息的行为 * 频繁申请权限、超范围申请权限 ## 发现问题 ### 隐私API Mac地址、AndroidID、IMEI、IMSI等 写到配置里 ### 基于JVMTI 运行时hook框架 本质是 JVMTI 本质上是在JVM内部的许多事件进行了埋点,包括内存申请、线程创建、类加载、GC信息、方法执行等,也可以控制JVM的某些行为 C/C++实现一个JVMTI Agent,在Agent里面注册一些JVM事件的回调。当事件发生时JVMTI调用这些回调方法。Agent可以在回调方法里面实现自己的逻辑。 ## 修改问题 ### 隐私SDK * 接口保持与系统的一致 * 内部做了缓存,只会获取一次隐私信息 ### 基于AMS 编译时hook框架 * 由于jvmti影响性能,开启特殊的指令,编译特殊的包 * 隐私的调用会被存储堆栈到本地文件里面 * UI自动化测试用例编写 ## 长效监控 ### UI自动化流水线检查 * 由于jvmti影响性能,开启特殊的指令,编译特殊的包 * 隐私的调用会被存储堆栈到本地文件里面 * UI自动化测试用例编写 ### 代码静态检查Lint开发 敏感API调用 # 参考资料 [ASM hook隐私方法调用,防止App被下架](https://juejin.cn/post/7043399520486424612) [我为Dexposed续一秒——论ART上运行时 Method AOP实现](https://weishu.me/2017/11/23/dexposed-on-art/) [Android JVMTI实现应用内存动态检测](https://www.jianshu.com/p/ab7bbc319dd9) [ 美团外卖Android Lint代码检查实践](https://zhuanlan.zhihu.com/p/35608859) [Android Lint](https://www.jianshu.com/p/b4c44e62d652) [Android Native Hook技术你知道多少?](https://zhuanlan.zhihu.com/p/132699875)