日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

加固前奏2-替换application

發布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 加固前奏2-替换application 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

運行加載過程
ActivityThread.JAVA
Application app = data.info.makeApplication(data.restrictedBackupMode, null);
?? ??? ??? ??? ??? ??? ??? ?->進入LoadedApk.java
?? ??? ??? ??? ??? ??? ??? ??? ??? ?String appClass = mApplicationInfo.className;
?? ??? ??? ??? ??? ??? ??? ??? ??? ?app.attachBaseContext()?? ??? ?//可控函數
?? ??? ??? ??? ??? ??? ??? ??? ??? ?...
?? ??? ??? ??? ??? ??? ??? ??? ??? ?mActivityThread.mAllApplications.add(app);
?? ??? ??? ??? ??? ??? ??? ??? ??? ?mApplication = app;
?? ??? ??? ??? ??? ??? ??? ?<-退出
mInitialApplication = app;
mInstrumentation.callApplicationOnCreate(app);
?? ??? ??? ??? ??? ??? ??? ?->?? ?app.onCreate()?? ??? ??? ??? ?//可控函數

?

onCreate中實現

Object currentActivityThread = javaRef.invokeStaticMethod("android.app.ActivityThread", "currentActivityThread",new Class[]{}, new Object[]{});Object mBoundApplication = javaRef.getFieldValue("android.app.ActivityThread", "mBoundApplication", currentActivityThread); Object loadedApk = javaRef.getFieldValue("android.app.ActivityThread$AppBindData", "info", mBoundApplication); javaRef.setFieldValue("android.app.LoadedApk", "mApplication", loadedApk, null); ApplicationInfo applicationInfo_loadapk = (ApplicationInfo) javaRef.getFieldValue("android.app.LoadedApk", "mApplicationInfo", loadedApk); String desAppName = "com.cc.shell.MyApplication"; applicationInfo_loadapk.className = desAppName; Application oldApplication = (Application) javaRef.getFieldValue("android.app.ActivityThread", "mInitialApplication", currentActivityThread); ArrayList<Application> mAllApplications = (ArrayList<Application>) javaRef.getFieldValue("android.app.ActivityThread", "mAllApplications", currentActivityThread); mAllApplications.remove(oldApplication); Application realApp = (Application) javaRef.invokeMethod("android.app.LoadedApk", "makeApplication", loadedApk , new Class[]{boolean.class, Instrumentation.class}, new Object[]{false, null}); realApp.onCreate(); javaRef.setFieldValue("com.android.ActivityThread", "mInitialApplication", currentActivityThread, realApp);

?

轉載于:https://www.cnblogs.com/lyxin/p/10052313.html

總結

以上是生活随笔為你收集整理的加固前奏2-替换application的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。