最近由于工作需要在做类似于平行空间的app,用到不少hook相关知识,这里有关去除谷歌广告可以简单介绍下:
众所周知,谷歌广告基本上都是一个框架Api加载的,不管Activity还是广播服务什么的,都一般带有Ad字样,其广告展示形式
也有横幅,全屏等,有静态展示也有视频展示,其常见类有如图所示:
一般我们在apk中把这些apk干掉很容易,然而hook时却出现各种问题,这里可以给大家提供一个思路,我们可以hook这些
广告类,根据其生命周期,让它自己干掉自己,代码如下参考:
hook_ADS_class=new HookClass("com.unity3d.ads.adunit.AdUnitActivity","onCreate");
hook_ADS_class.MethodHook(Bundle.class,Ad_CALLBACK);
============================================================================
static XC_MethodHook Ad_CALLBACK=new XC_MethodHook(){
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
Activity CurrentActivity = (Activity) param.thisObject;
CurrentActivity .finish();
}
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
}
};
当然解决的方法有很多,比如还可以hook掉调用广告的Activity或者hook掉加载或者展示广告的函数,这只是一种思路,后面有更好点子我们也可以继续优化我们的作法......