[問題] 關於 Xposed 開發

作者: darkk6 (Mr. Pan)   2015-06-02 22:50:45
想請問這邊有沒有大大們有開發過 Xposed 套件的呢~
我遇到幾個不知該如何解決和想釐清的問題:
主要是是關於 XSharedPreferences 和 handleLoadPackage
第一個問題是:
handleLoadPackage 到底在怎樣的情況下會呼叫?
我的認知是當某的 Package 載入的時候會呼叫,因此參數中的
lpparam.packageName 可以取得載入的 Package 是誰
我現在想做的是,當指有特定的 App 被載入時,才進行
Method 的 hook,因此會判斷:
if( appList.containts(lpparam.packageName) ){
// Do method Hook
}
但執行起來遇到很多很多怪怪的問題,讓我不太確定到底是我要
hook 的 method 太特殊,還是我的觀念有問題....
第二個問題:
這些被 Hook 的 Method 是只有在這個指定的 process 或者 package 有效嗎?
假設當 tw.darkk6.abc 載入時我 hook 了某個 android 系統的 method
而 tw.darkk6.xyz 載入時我沒 hook
.abc 和 .xyz 都有呼叫該系統 Method,是不是只有 .abc 的會有影響?
第三個問題是:
呈上一,由於只有當特定的 package 載入時才針對該 Package hook , 因此
我在 Module 的 shared_pref 寫入一條 appSetting 儲存 json string
<string name="appSetting">jsonString</string>
而在 Module 的 initZygote() 透過 XSharedPreferences 開啟
並且設定為 makeWorldReadable。
只有寫在這個設定中的 package 需要 hook 這個 method。
讀取時透過 getString("appSetting",defaultValue); 來讀取
但不知道為什麼,在 initZygote() 階段確實有讀到資料,但實際進入
handleLoadPackage 的時候卻讀不出來(只取得 defaultValue),
錯誤原因我也不曉得...
我參考過網路上的一些範例(如:台灣製造的 MinMinGuard)
差異最大的部分就是,該 Module 並沒有在 handleLoadPackage 階段判斷是否要
hookMethod , 而是無論如何直接 hook , 而是在 Call back 的地方才進行判斷
是否要處理
只是我怕這樣會不會造成一些問題,暫時不打算這樣用,當然這是以我自己
理解 handleLoadPackage 的運作方式為前提,如果我認知有誤,可能要重新思考
感謝大家 QQ

Links booklink

Contact Us: admin [ a t ] ucptt.com