背景:
公司的APP被工信部通报:1.在用户确认隐私权限以前会获取用户的mac地址。2.在app内频繁的获取定位,超过了场景所必须的频次。
排查过程
收到通报我们一脸懵,我们排查业务代码中没有获取mac地址,并且我们的定位sdk只定位一次,于是想到了可能是三方sdk在获取mac地址。
于是我们电话工信部下的全国APP技术检测平台 咨询到他们是通过getHardwareAddress方法的调用来检测MAC地址的获取。至于第2条没有给出确切的回复,他们说可能是接口里频繁的带有用户位置信息,超出了业务场景必须的频次,也可能是在频繁的调用LocationManager#getLastKnownLocation方法。
于是反编译了自己项目中的apk,全局搜索查询到有三方sdk在调用getHardwareAddress和getLastKnownLocation方法。于是首次安装采取了延迟初始化的策略,把相关的三方sdk的初始化延迟到了用户同意隐私权限之后。但是我们想知道这些方法的调用时机和调用频次。因此我们需要用AOP或者hook系统方法的方式来查看他们的调用时机。我采用的是Xposed工具hook的系统底层方法以达到检测调用时机。
检测方法
使用VirtualXposed在手机上装了一下虚拟系统。https://github.com/android-hacker/VirtualXposed
sherlock: 这是一个用来拦截方法的程序,具体是你需要拦截那些方法,可以在 https://github.com/hauler1/sherlock 下载源码并自定义。
使用方法:
1)安装两个App到你的手机(不需要root)
安装VirtualXposed App,可以拉取GitHub代码自己运行安装,也可以下载现成VirtualXposed App。
此处需要注意,你的待检测app是32位的就应该使用VirtualXposed32位APK,是64位的就应该使用VirtualXposed64位,不然会出现无法安装 待检测app的问题。
2)打开VirtualXposed 点击添加应用,选择你要监控的应用和sherlock安装到VirtualXposed中
3)点击模块管理,勾选你要sherlock,然后退到VirtualXposed首页,向上滑动,先打开sherlock模块,再启动你要检测的app。在logcat中就能看到调用的日志输出了。
————————————————
版权声明:本文为CSDN博主「hauler~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gjd1988/article/details/113404752