看板 AndroidDev 關於我們 聯絡資訊
想請問這邊有沒有大大們有開發過 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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.138.38.48 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1433256648.A.08B.html