Add resources hooking support for all variants

This commit is contained in:
solohsu 2019-04-23 00:18:06 +08:00
parent 4ee0db8734
commit bc8b2bc16b
5 changed files with 39 additions and 1 deletions

View File

@ -1,6 +1,8 @@
package com.elderdrivers.riru.edxp; package com.elderdrivers.riru.edxp;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.res.Resources;
import android.content.res.XResources;
import android.os.Build; import android.os.Build;
import android.os.Process; import android.os.Process;
@ -147,4 +149,8 @@ public class Main implements KeepAll {
public static native void resumeAllThreads(long obj); public static native void resumeAllThreads(long obj);
public static native int waitForGcToComplete(long thread); public static native int waitForGcToComplete(long thread);
public static native boolean initXResourcesNative();
public static native void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes);
} }

View File

@ -1,7 +1,10 @@
package com.elderdrivers.riru.edxp.sandhook.config; package com.elderdrivers.riru.edxp.sandhook.config;
import android.content.res.Resources;
import android.content.res.XResources;
import android.util.Log; import android.util.Log;
import com.elderdrivers.riru.edxp.Main;
import com.elderdrivers.riru.edxp.config.BaseHookProvider; import com.elderdrivers.riru.edxp.config.BaseHookProvider;
import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter; import com.elderdrivers.riru.edxp.deopt.PrebuiltMethodsDeopter;
import com.elderdrivers.riru.edxp.sandhook.dexmaker.DynamicBridge; import com.elderdrivers.riru.edxp.sandhook.dexmaker.DynamicBridge;
@ -53,4 +56,14 @@ public class SandHookProvider extends BaseHookProvider {
public long getMethodId(Member member) { public long getMethodId(Member member) {
return 0; return 0;
} }
@Override
public boolean initXResourcesNative() {
return Main.initXResourcesNative();
}
@Override
public void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes) {
Main.rewriteXmlReferencesNative(parserPtr, origRes, repRes);
}
} }

View File

@ -1,6 +1,8 @@
package com.elderdrivers.riru.edxp; package com.elderdrivers.riru.edxp;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.res.Resources;
import android.content.res.XResources;
import android.os.Build; import android.os.Build;
import android.os.Process; import android.os.Process;
@ -138,4 +140,8 @@ public class Main implements KeepAll {
public static native void resumeAllThreads(long obj); public static native void resumeAllThreads(long obj);
public static native int waitForGcToComplete(long thread); public static native int waitForGcToComplete(long thread);
public static native boolean initXResourcesNative();
public static native void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes);
} }

View File

@ -1,5 +1,9 @@
package com.elderdrivers.riru.edxp.whale.config; package com.elderdrivers.riru.edxp.whale.config;
import android.content.res.Resources;
import android.content.res.XResources;
import com.elderdrivers.riru.edxp.Main;
import com.elderdrivers.riru.edxp.config.BaseHookProvider; import com.elderdrivers.riru.edxp.config.BaseHookProvider;
import com.lody.whale.WhaleRuntime; import com.lody.whale.WhaleRuntime;
@ -43,4 +47,14 @@ public class WhaleHookProvider extends BaseHookProvider {
public long getMethodId(Member member) { public long getMethodId(Member member) {
return WhaleRuntime.getMethodSlot(member); return WhaleRuntime.getMethodSlot(member);
} }
@Override
public boolean initXResourcesNative() {
return Main.initXResourcesNative();
}
@Override
public void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes) {
Main.rewriteXmlReferencesNative(parserPtr, origRes, repRes);
}
} }

View File

@ -58,7 +58,6 @@ public class Router {
} }
Router.startBootstrapHook(isSystem); Router.startBootstrapHook(isSystem);
XposedInit.initForZygote(isSystem); XposedInit.initForZygote(isSystem);
Main.initXResourcesNative();
} catch (Throwable t) { } catch (Throwable t) {
Utils.logE("error during Xposed initialization", t); Utils.logE("error during Xposed initialization", t);
XposedBridge.disableHooks = true; XposedBridge.disableHooks = true;