背景:
公司的APP被工信部通報(bào):1.在用戶確認(rèn)隱私權(quán)限以前會(huì)獲取用戶的mac地址。2.在app內(nèi)頻繁的獲取定位,超過(guò)了場(chǎng)景所必須的頻次。
排查過(guò)程
收到通報(bào)我們一臉懵,我們排查業(yè)務(wù)代碼中沒(méi)有獲取mac地址,并且我們的定位sdk只定位一次,于是想到了可能是三方sdk在獲取mac地址。
于是我們電話工信部下的全國(guó)APP技術(shù)檢測(cè)平臺(tái) 咨詢到他們是通過(guò)getHardwareAddress方法的調(diào)用來(lái)檢測(cè)MAC地址的獲取。至于第2條沒(méi)有給出確切的回復(fù),他們說(shuō)可能是接口里頻繁的帶有用戶位置信息,超出了業(yè)務(wù)場(chǎng)景必須的頻次,也可能是在頻繁的調(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)方法的方式來(lái)查看他們的調(diào)用時(shí)機(jī)。我采用的是Xposed工具h(yuǎn)ook的系統(tǒng)底層方法以達(dá)到檢測(cè)調(diào)用時(shí)機(jī)。
檢測(cè)方法
使用VirtualXposed在手機(jī)上裝了一下虛擬系統(tǒng)。https://github.com/android-hacker/VirtualXposed
sherlock: 這是一個(gè)用來(lái)攔截方法的程序,具體是你需要攔截那些方法,可以在 https://github.com/hauler1/sherlock 下載源碼并自定義。
使用方法:
1)安裝兩個(gè)App到你的手機(jī)(不需要root)
安裝VirtualXposed App,可以拉取GitHub代碼自己運(yùn)行安裝,也可以下載現(xiàn)成VirtualXposed App。
此處需要注意,你的待檢測(cè)app是32位的就應(yīng)該使用VirtualXposed32位APK,是64位的就應(yīng)該使用VirtualXposed64位,不然會(huì)出現(xiàn)無(wú)法安裝 待檢測(cè)app的問(wèn)題。
2)打開(kāi)VirtualXposed 點(diǎn)擊添加應(yīng)用,選擇你要監(jiān)控的應(yīng)用和sherlock安裝到VirtualXposed中

3)點(diǎn)擊模塊管理,勾選你要sherlock,然后退到VirtualXposed首頁(yè),向上滑動(dòng),先打開(kāi)sherlock模塊,再啟動(dòng)你要檢測(cè)的app。在logcat中就能看到調(diào)用的日志輸出了。

————————————————
版權(quán)聲明:本文為CSDN博主「hauler~」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/gjd1988/article/details/113404752