对于涉及用户隐私的API的行为,无法通过手工log、UI等方式有效的方案进行;
种类:
- hook
- 动态代理、AspectJ
- AppOpsManager.OnOpNotedCallback
// 创建AppOpsManager实例并添加上面定义的回调
val appOpsManager = getSystemService(AppOpsManager::class.java) as AppOpsManager
appOpsManager.setOnOpNotedCallback(mainExecutor, appOpsCallback)
这里主要讲hook
转换思路进行hook
Android系统隐私权限的API方法可以通过Xposed进行hook处理,监听到相关方法的调用;
仓库代码:https://github.com/yanerchuang/PrivacyPolicyComplianceCheck
目前代码中监控的API涉及:(也可以手动添加)
- ActivityManager
- ApplicationPackageManager
- InetAddress
- NetworkInterface
- WifiManager
- Settings
- SensorManager
- TelephonyManager
- LocationManager
实现步骤
- 准备一个Xposed的设备
- 运行脚本至设备上
- 在Xposed中启动插件,重启手机,再打开APP
- 通过过滤’
hookLog
日志进行查看
实现后效果如下