Xposedで出会った穴


あるアプリのdexがアンドロイド5に複数ある場合、0以上のARTはoatファイルを合成します.では5.0以下には複数のdexが存在する.したがって、5.0以下のhookでは、プライマリdexではなく、パケットdexが存在するメソッドがあります.このときxposedはパケットdexがロードされていないときにコールバックhandleLoadPackage()を行う.このときクラスローダはパケット内のクラスをロードしないとXposedHelpersになる.findAndHookMethodが異常を投げ出す.
解决方法:(皆さんは以下の参考文献を参考にして、ここでは車輪を作らない)
 XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {
                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    ClassLoader cl = ((Context)param.args[0]).getClassLoader();
                    Class> hookclass = null;
                    try {
                        hookclass = cl.loadClass("xxx.xxx.xxx");
                    } catch (Exception e) {
                        Log.e("jyy", "  xxx.xxx.xxx  ", e);
                        return;
                    }
                    Log.i("jyy", "  xxx.xxx.xxx  ");
                    XposedHelpers.findAndHookMethod(hookclass, "xxx", new XC_MethodHook(){
                        //  hook  
                    });
                }
            });

参考1参考2参考3