parent
dc0c63e857
commit
36f058f554
|
|
@ -47,6 +47,7 @@ import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
import java.util.zip.ZipFile;
|
import java.util.zip.ZipFile;
|
||||||
|
|
||||||
import de.robv.android.xposed.XC_MethodHook;
|
import de.robv.android.xposed.XC_MethodHook;
|
||||||
|
|
@ -161,7 +162,24 @@ public class LSPApplication extends ApplicationServiceClient {
|
||||||
mPackages.remove(appInfo.packageName);
|
mPackages.remove(appInfo.packageName);
|
||||||
appLoadedApk = activityThread.getPackageInfoNoCheck(appInfo, compatInfo);
|
appLoadedApk = activityThread.getPackageInfoNoCheck(appInfo, compatInfo);
|
||||||
XposedHelpers.setObjectField(mBoundApplication, "info", appLoadedApk);
|
XposedHelpers.setObjectField(mBoundApplication, "info", appLoadedApk);
|
||||||
Log.i(TAG, "appClassLoader initialized: " + appLoadedApk.getClassLoader());
|
|
||||||
|
var activityClientRecordClass = XposedHelpers.findClass("android.app.ActivityThread$ActivityClientRecord", ActivityThread.class.getClassLoader());
|
||||||
|
var fixActivityClientRecord = (BiConsumer<Object, Object>)(k, v) -> {
|
||||||
|
if (activityClientRecordClass.isInstance(v)) {
|
||||||
|
var pkgInfo = XposedHelpers.getObjectField(v, "packageInfo");
|
||||||
|
if (pkgInfo == stubLoadedApk) {
|
||||||
|
Log.d(TAG, "fix loadedapk from ActivityClientRecord");
|
||||||
|
XposedHelpers.setObjectField(v, "packageInfo", appLoadedApk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var mActivities = (Map<?, ?>) XposedHelpers.getObjectField(activityThread, "mActivities");
|
||||||
|
mActivities.forEach(fixActivityClientRecord);
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
|
var mLaunchingActivities = (Map<?, ?>) XposedHelpers.getObjectField(activityThread, "mLaunchingActivities");
|
||||||
|
mLaunchingActivities.forEach(fixActivityClientRecord);
|
||||||
|
}
|
||||||
|
Log.i(TAG, "hooked app initialized: " + appLoadedApk);
|
||||||
|
|
||||||
return (Context) XposedHelpers.callStaticMethod(Class.forName("android.app.ContextImpl"), "createAppContext", activityThread, stubLoadedApk);
|
return (Context) XposedHelpers.callStaticMethod(Class.forName("android.app.ContextImpl"), "createAppContext", activityThread, stubLoadedApk);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ buildscript {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:7.1.0-beta02'
|
classpath 'com.android.tools.build:gradle:7.0.3'
|
||||||
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31'
|
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.31'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2
core
2
core
|
|
@ -1 +1 @@
|
||||||
Subproject commit c205f8a2c9d2f207b2ce6de14d0054f5220a0b10
|
Subproject commit d1098f04abbcc2a91ef211055c60c1a992b899d1
|
||||||
Loading…
Reference in New Issue