本帖最后由 听鬼哥说故事 于 2014-9-25 12:27 编辑
最近一直没有发分析游戏破解类的游戏,刚刚看到一个好玩的游戏更新了,那么我们来分析下新版本的破解。
游戏的破解,主要靠的是积累经验,没有千篇一律的游戏,所以只是照着教程修改是次要的,重要的是破解思路的分析。
游戏名:逃离大厦 版本:1.5 目的:金币破解,广告去除
0x1:游戏试玩发现广告情况:
到商店看一下:
好了,我们简单总结一下: 通过第一张图,我们可以得到: ①.游戏在进入的时候显示广告--->我们找游戏启动类开始分析 ②.广告上面说,点击安装会增加200金币--->我们找增加200的地方 ③.广告资源是由网络返回的,还是本地自带的--->断网方式进入,确定资源从哪里来
通过第二张图,我们可以得到: ①.游戏初始化金币为100-->我们可以找游戏初始化100的地方,看游戏是如何定义金币的,同时可以将这里修改为9999 ②.商品标价游戏币是用coin来表示的-->搜索coin所在的类进行查看,看看金币的模型是如何构造的 ③.最下面有广告,点击左下角的小圈i --->通过点击,确定这里的广告是谷歌广告
0x2:开始分析
按照0x1的游戏试玩,我们已经得出了一些结论,那么下一步就是开始分析这些结论哪个可用。 这里,建议有兴趣的朋友可以自己开始动手了。。。
------------------------分割线-----------------------------
继续我们的分析: Coin的搜索,让我们发现这两个类:
打开后,我们发现正是我们所需的
有set 和get方法,还有update函数可以辅助确定,金币的定义是在此类,那么接下来就简单了,我们对get方法的返回值进行赋值即可,float类型的,所以我们在return v0前面加上
const v0, 0x4b18967f
即9999999。 不熟悉转换的,可以自己写一个helloworld,设置一个float的数值,自己反编译看看即可。
0x3:广告的去除
google广告的去除,以前也有文章简单叙述过,这里就不再重复。 我们直接开始分析软件打开后的那个广告显示。 通过断网和联网两种情况,我们确定此图片不是由网络返回的,而是本地存在的资源。 那么我们就在本地浏览下,一般这些资源都是在assets文件夹下放置的。 通过浏览,发现位置:
所以,我们就搜索一下banner.png的引用位置:
好了,只发现一处,那么,我们按照正常的思路,直接删掉这四行引用。
---------------分割线------------
打包测试,游戏闪退 那我们就分析下这几行代码的作用。 通过阅读smali代码,联系上下文,发现是对一些图片资源的定义设置,然后游戏中来调用,同时,这个方法内的图片有一些就是游戏本身的图片资源,所以我们这里随意删除,肯定会导致其他地方调用失败,游戏会闪退。
好了,那么我们继续分析下去。 我们搜索assets下banner.png所在文件夹,berry_king 发现:
我们进去看一下: 这次我们搜索.method ,来查看此类里面的方法:
看到showView和hideView,我们就有一些小激动了,打开看下
这个menuScene,刚好是我们搜索的banner.png所在的MenuSceneResources这个类相关,通过名字也可以了解,banner.png所在的类为资源定义类,所以推测我们这里的show方法,就是显示那个广告的,于是,我们在方法头那里直接返回void即可。
return-void
打包,测试。。。。。。。
一切都正常,广告部显示,金币99999。。。。
接下来就是好好玩游戏吧,其实,第一次发现这个游戏,我是手动一直打通关的,在通关以后,简单分析了,这次更新,增加了一些关卡,挺好玩的。
文档以及附件相关地址:
|