[问题] 关于 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