前言
最近由于学业需要,就找到一款数学计算器,但是运行需要G框架,还不能跳过,就很烦。
去网上找没找到较新版的,
于是,就下手了。。
这个逻辑一般就是:
打开APP–>判断GP服务是否存在–>存在[提示],不存在[正常使用]
所以,欺骗一下软件:我存在GP服务
TOOLS
MT管理器2.9 or others
开始了
1.寻找触发位置
打开MT的Activity
工具
打开目标APP
emmm…竟然没有出现想要的东西,不慌,点一下确定~
哈哈,还是被我抓到了吧。
这里记录一下,提示框的Activity
是NoPlayServicesActivity
2.搞掉提示框
MT对classes.dex搜索代码NoPlayServicesActivity
根据命名,显然要处理的是LauncherActivity
,进入它
Smali Version | Java Version(清爽版) |
---|---|
观察选中区域(NoPlayServicesActivity
在第1390行,选中区域是它所属的代码块)
z2的值代表是否存在GP服务,不存在就是false、存在就是true
所以,只要把!z2改成z2就可以了,
但是我们动不了java代码,只能从smali下手,于是:
不难发现if(!z2){
所在行对应if-nez v2, :cond_b8
(都有一个if,所以看一下就知道啦)
这里需要了解一下smali部分语法:if-nez vA, :cond_**" 如果vA不等于0则跳转到:cond_**
而他的孪生兄弟是:if-eqz vA, :cond_**" 如果vA等于0则跳转到:cond_**
因此,把if-nez
改成if-eqz
保存,编译,签名,安装,一气呵成
3.测试
额外的补充—提示框的触发条件
观察上面代码,我们来倒推一下:
假设有框架不出现提示,那么!z2 == false
即z2 == true
;
但在第398行z2 = false
也就是初始值为false
,
所以,中间z2被修改了,而这个条件就是430行的h.f.a.c.e.c.d
中的a
方法
追溯到该方法:
可以看到这是根据isGooglePlayServicesAvailable
的判断情况来返回值的,这与我们的预期设想是相同的。
完了=_=