diff --git a/app/src/main/java/tw/fatminmin/xposed/minminguard/blocker/ApiBlocking.java b/app/src/main/java/tw/fatminmin/xposed/minminguard/blocker/ApiBlocking.java index 0f963d50..669f5cbb 100644 --- a/app/src/main/java/tw/fatminmin/xposed/minminguard/blocker/ApiBlocking.java +++ b/app/src/main/java/tw/fatminmin/xposed/minminguard/blocker/ApiBlocking.java @@ -3,6 +3,7 @@ import android.content.Context; import android.view.View; import de.robv.android.xposed.XC_MethodHook; +import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.XposedHelpers; import de.robv.android.xposed.XposedHelpers.ClassNotFoundError; import de.robv.android.xposed.callbacks.XC_LoadPackage; @@ -111,6 +112,35 @@ protected void beforeHookedMethod(MethodHookParam param) return true; } + /* + Used for blocking object construction + */ + public static boolean blockConstructor(final String packageName, final String adClass, final XC_LoadPackage.LoadPackageParam lpparam) + { + try + { + Class adView = XposedHelpers.findClass(adClass, lpparam.classLoader); + XposedBridge.hookAllConstructors(adView, new XC_MethodHook() + { + @Override + protected void beforeHookedMethod(MethodHookParam param) + { + String debugMsg = String.format("blockConstructor: Detect %s constructor in %s", adClass, packageName); + + Util.log(packageName, debugMsg); + + param.setResult(new Object()); + } + }); + } + catch (ClassNotFoundError e) + { + return false; + } + + return true; + } + public static boolean blockAdFunctionExact(final String packageName, final String adClass, final String adFunc, final Object parameter, final XC_LoadPackage.LoadPackageParam lpparam) { try diff --git a/app/src/main/java/tw/fatminmin/xposed/minminguard/blocker/adnetwork/mAdserve.java b/app/src/main/java/tw/fatminmin/xposed/minminguard/blocker/adnetwork/mAdserve.java index fc86886d..6af986f3 100644 --- a/app/src/main/java/tw/fatminmin/xposed/minminguard/blocker/adnetwork/mAdserve.java +++ b/app/src/main/java/tw/fatminmin/xposed/minminguard/blocker/adnetwork/mAdserve.java @@ -1,10 +1,7 @@ package tw.fatminmin.xposed.minminguard.blocker.adnetwork; -import de.robv.android.xposed.XC_MethodHook; -import de.robv.android.xposed.XposedBridge; -import de.robv.android.xposed.XposedHelpers; -import de.robv.android.xposed.XposedHelpers.ClassNotFoundError; import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam; +import tw.fatminmin.xposed.minminguard.blocker.ApiBlocking; import tw.fatminmin.xposed.minminguard.blocker.Blocker; import tw.fatminmin.xposed.minminguard.blocker.Util; @@ -16,30 +13,11 @@ public class mAdserve extends Blocker public boolean handleLoadPackage(final String packageName, LoadPackageParam lpparam) { - - try - { - //TODO Add blockConstructor to ApiBlocking, so we dont have to do this hack.. - Class adView = XposedHelpers.findClass("com.adsdk.sdk.banner.InAppWebView", lpparam.classLoader); - XposedBridge.hookAllConstructors(adView, new XC_MethodHook() - { - - @Override - protected void beforeHookedMethod(MethodHookParam param) - { - Util.log(packageName, "Detect mAdserve InAppWebView constructor in " + packageName); - - param.setResult(new Object()); - } - }); - + if (ApiBlocking.blockConstructor(packageName, BANNER, lpparam)) { Util.log(packageName, packageName + " uses mAdserve"); + return true; } - catch (ClassNotFoundError e) - { - return false; - } - return true; + return false; } @Override