背景:
公司的APP被工信部通報(bào):1.在用戶確認(rèn)隱私權(quán)限以前會獲取用戶的mac地址翘骂。2.在app內(nèi)頻繁的獲取定位驱闷,超過了場景所必須的頻次。
排查過程
收到通報(bào)我們一臉懵敲董,我們排查業(yè)務(wù)代碼中沒有獲取mac地址紫皇,并且我們的定位sdk只定位一次,于是想到了可能是三方sdk在獲取mac地址腋寨。
于是我們電話工信部下的全國APP技術(shù)檢測平臺 咨詢到他們是通過getHardwareAddress方法的調(diào)用來檢測MAC地址的獲取聪铺。至于第2條沒有給出確切的回復(fù),他們說可能是接口里頻繁的帶有用戶位置信息萄窜,超出了業(yè)務(wù)場景必須的頻次铃剔,也可能是在頻繁的調(diào)用LocationManager#getLastKnownLocation方法。
于是反編譯了自己項(xiàng)目中的apk脂倦,全局搜索查詢到有三方sdk在調(diào)用getHardwareAddress和getLastKnownLocation方法番宁。于是首次安裝采取了延遲初始化的策略,把相關(guān)的三方sdk的初始化延遲到了用戶同意隱私權(quán)限之后赖阻。但是我們想知道這些方法的調(diào)用時(shí)機(jī)和調(diào)用頻次蝶押。因此我們需要用AOP或者h(yuǎn)ook系統(tǒng)方法的方式來查看他們的調(diào)用時(shí)機(jī)。我采用的是Xposed工具h(yuǎn)ook的系統(tǒng)底層方法以達(dá)到檢測調(diào)用時(shí)機(jī)火欧。
檢測方法
使用VirtualXposed在手機(jī)上裝了一下虛擬系統(tǒng)棋电。https://github.com/android-hacker/VirtualXposed
sherlock: 這是一個(gè)用來攔截方法的程序,具體是你需要攔截那些方法苇侵,可以在 https://github.com/hauler1/sherlock 下載源碼并自定義赶盔。
使用方法:
1)安裝兩個(gè)App到你的手機(jī)(不需要root)
安裝VirtualXposed App,可以拉取GitHub代碼自己運(yùn)行安裝榆浓,也可以下載現(xiàn)成VirtualXposed App于未。
此處需要注意,你的待檢測app是32位的就應(yīng)該使用VirtualXposed32位APK陡鹃,是64位的就應(yīng)該使用VirtualXposed64位烘浦,不然會出現(xiàn)無法安裝 待檢測app的問題。
2)打開VirtualXposed 點(diǎn)擊添加應(yīng)用萍鲸,選擇你要監(jiān)控的應(yīng)用和sherlock安裝到VirtualXposed中
3)點(diǎn)擊模塊管理闷叉,勾選你要sherlock,然后退到VirtualXposed首頁脊阴,向上滑動握侧,先打開sherlock模塊蚯瞧,再啟動你要檢測的app。在logcat中就能看到調(diào)用的日志輸出了品擎。
————————————————
版權(quán)聲明:本文為CSDN博主「hauler~」的原創(chuàng)文章埋合,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明孽查。
原文鏈接:https://blog.csdn.net/gjd1988/article/details/113404752