华为手机检测到启动会获取到定位信息的问题

549 阅读2分钟

1、背景

中央网信办,检测到,APP启动会获取用户的定位信息,要求整改,复现步骤是:

  • 开启定位权限和定位服务
  • 启动APP

2、排查思路和遇到的问题,以及接近方案;

  • 针对app:hook 定位api;将系统定位api和高德定位api全部hook不执行;诡异的地方:发现依然会获取;
  • 怀疑Aspectj hook不完全,于是开启全量hook,结果还是会提示获取定位;
  • 使用二分排查,不断缩小范围,直到缩小到,将application全部注释,底层Application全部注释,依然提示获取定位;耗时3天无果;更诡异地方是:华为提示此这个获取定位还不太稳定时有时无;至此,有点陷入死局。
  • 换个思路,对柚宝宝进行如上操作,直接使用二分排查到最后一步,结果同上,sad。
  • 和华为推送群对接,和华为开发者联盟发送邮件,流程太长,回复没有有效信息,无果;
  • google搜索定位相关信息,怀疑获取ip地址,或者获取mac地址,以及获取BSSID等信息可能会被识别为获取定位权限,于是hook以上api,发现还是会获取定位!!!但此时感觉离真相很近了。
  • 抱着试试看的心态,直接把Wifimanager hook掉,发现定位次数少了一大波,震惊!于是写个demo测试,发现获取Wifiinfo对象就会被华为直接定义为 获取位置信息,至此找到大部分源头。但此时启动依然还会有提示一次获取定位;(就差最后一步了)
  • 观察hook日志离访问定位的第三方SDK,有百川,友盟,穿山甲,七鱼;于是将以上sdk全部禁用,结果不再提示定位!!!
  • 逐步排查,发现穿山甲sdk内部存在获取定位信息,具体什么api,没有查到,后边推进穿山甲升级直接去除定位信息即可;