嘗試採用Frida進行處理。
目前的一個思路就是trace app中所有調用系統函數的功能,這個方法不夠細緻,無法判斷是app自身調用的還是app調用的sdk調用的。
https://github.com/zhengjim/camille
昨天嘗試了下,發現並沒有多好使,還需要繼續研究下,自己寫個demo試試。
只需要hook相應的隱私API就算是觸犯了隱私信息的採集了。
//獲取手機通信錄
function getPhoneAddressBook() {
var contacts_uri = Java.use("android.provider.ContactsContract$Contacts").CONTENT_URI.value.toString();
var contentResolver = Java.use("android.content.ContentResolver");
contentResolver.query.overload('android.net.Uri', '[Ljava.lang.String;', 'android.os.Bundle', 'android.os.CancellationSignal').implementation = function (uri, str, bundle, sig) {
if (uri == contacts_uri) {
alertSend("獲取手機通信錄", "獲取uri爲:" + uri)
}
return this.query(uri, str, bundle, sig);
}
}
這樣就可以了,無非就是看隱私API都有哪些,有了就行了
還有就是如果是這種寫死的方式的話,可能不太方便不適合維護,所以,需要一個單獨的接口傳入類、類中的函數名,就能夠批次hook即可。
可以參考r0tracer:https://github.com/r0ysue/r0tracer