虽说现在都在玩农药了,但是偶尔玩一两个原生游戏你会发现里边植入了广告,这些广告弹出的时间不一定,有的直接游戏启动就会弹出,有的需要过了游戏的某一关卡才会弹出,真的很蛋疼,包括Googleplay的弹窗,看着着实不爽。今天就简单说下破除这些验证和广告的简单技巧,方式简单粗暴,但是很奏效。 弹窗:
以上的两张图片都是来自于原生游戏中的弹窗,解除这类验证比较简单: 在我们反编译后的smali代码总直接全局搜索geterrordialog,你会看到如下图:(PS:本人使用的是VSCode-win32-1.8.0) 我们在GoogleApiAvailability.smali中直接删掉geterrordialog中的方法体(不要 删掉最后的v0寄存器),至此,弹窗这块就解除掉了。 广告: 接下来我们说广告的问题,谷歌的广告基本以全屏的activity加载url的方式载入,也不排除有banner广告,(即以横幅的形式显示在游戏界面)。破除广告我们就不去看他是怎么实现的了,在这里说一种简单的粗暴的方式,就是把这个activity直接给他干掉,为啥敢这样做呢?想一下既然是以url来加载的广告,那这个app肯定会遇到没有网络的情况,没有网络怎么办,难道加载广告就让他崩掉?肯定不能这样嘛,所以我们就放心大胆滴破坏掉广告这部分即可,大致思路就这样。怎么知道广告是哪个activity呢?我们运行adb shell ,将程序调到广告的页面,然后我们运行一行命令 dumpsys activity ,查看栈中activity的信息, 找到onresumed ,后边的即为当前的activity啦。 一般的这类都统一写成了com.google.android.gms.ads.AdActivity,我们直接在清单文件中删掉这个类就可以啦。 已上只是粗略的破解方式,大神有更好的方式欢迎交流, 写的烂,望大家多多包涵,予以指正。