Disable resources hooking when initialization failed

This commit is contained in:
solohsu 2019-04-22 22:54:27 +08:00
parent 6e6327bec8
commit 3930799086
5 changed files with 23 additions and 0 deletions

View File

@ -36,6 +36,11 @@ public abstract class BaseHookProvider implements HookProvider {
} }
@Override
public boolean initXResourcesNative() {
return false;
}
@Override @Override
public void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes) { public void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes) {

View File

@ -29,6 +29,11 @@ public class YahfaHookProvider extends BaseHookProvider {
return DexMakerUtils.findMethodNative(hookMethod); return DexMakerUtils.findMethodNative(hookMethod);
} }
@Override
public boolean initXResourcesNative() {
return Main.initXResourcesNative();
}
@Override @Override
public void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes) { public void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes) {
Main.rewriteXmlReferencesNative(parserPtr, origRes, repRes); Main.rewriteXmlReferencesNative(parserPtr, origRes, repRes);

View File

@ -92,6 +92,11 @@ public class EdXpConfigGlobal {
} }
@Override
public boolean initXResourcesNative() {
return false;
}
@Override @Override
public void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes) { public void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes) {

View File

@ -25,5 +25,7 @@ public interface HookProvider {
void deoptMethodNative(Object method); void deoptMethodNative(Object method);
boolean initXResourcesNative();
void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes); void rewriteXmlReferencesNative(long parserPtr, XResources origRes, Resources repRes);
} }

View File

@ -105,6 +105,12 @@ public final class XposedInit {
return; return;
} }
if (!EdXpConfigGlobal.getHookProvider().initXResourcesNative()) {
Log.e(TAG, "Cannot hook resources");
disableResources = true;
return;
}
/* /*
* getTopLevelResources(a) * getTopLevelResources(a)
* -> getTopLevelResources(b) * -> getTopLevelResources(b)