xposed來hook一些加固的應用

最近發現apk防護意識越來越強,大部分apk不是加固就是加密重度混淆處理,有守就有攻,這樣技術才能不斷提高

一.hook原理

使用加固之後的應用的classloader會被換成其加固應用本身的,所以只需要在hook的時候把classloader換成殼的就可以了。

二.具體操作和分析

被加固的應用是可以反編譯的,反編譯之後dex裏面只有很少的幾個類,比較重要的就是殼入口這個類,可以在這個類裏面的裏面去獲取context參數,然後就可以通過context獲得到殼的類加載器,之後只需要用這個類加載器來hook就可以成功的hook到加固的app。

這個加固想必大家都知道什麼加固,按照對應的突破點進行hook,代碼如下:



            XposedHelpers.findAndHookMethod("com.tencent.StubShell.TxAppEntry", loadPackageParam.classLoader,
                    "attachBaseContext", Context.class, new XC_MethodHook() {
                        @Override
                        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                            super.afterHookedMethod(param);
                            //獲取到Context對象,通過這個對象來獲取classloader
                            Context context = (Context) param.args[0];
                            //獲取classloader,之後hook加固後的就使用這個classloader
                            ClassLoader classLoader =context.getClassLoader();
                            //下面就是強classloader修改成殼的classloader就可以成功的hook了
                            XposedHelpers.findAndHookMethod("xxx.xxx.xxx.xxx", classLoader, "xxx", String.class, String.class, new XC_MethodHook() {
                                @Override
                                protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
                                    super.beforeHookedMethod(param);
                                    LogUtils.log( "key: " + (String) param.args[0]);
                                    LogUtils.log( "value: " + (String) param.args[1]);
                                    param.setResult((String) param.args[1]);
                                }
                            });
                       
        }

    }
}
記着加載原理,萬變不離其宗(分享是種美德,交流使人進步!!!)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章