我们要破解一个游戏,首先要对该游戏有所了解,确定破解目标,发掘破解途径。因此,我们先安装该游戏并运行,出现如下界面:

这是一个Berry king游戏的推广广告,告诉我们安装该游戏可获得200金币。关掉该界面,进入游戏商店,我们可以在这里通过金币购买“提示”、“建议”、“大师”和“时间”,如下左图,左上角显示的是游戏者拥有的金币数,初始金币为100。这100金币要购买这些东西是不够的,因此我们首先需要花钱购买金币,如下右图所示。

我们破解的目的就是要做到不花钱能获取到“提示”、“建议”、“大师”和无限的“时间”。确定了破解目的,下面就来确定破解思路,我想到的思路有2条:

(1)    破解支付,达到不花钱购买金币的目的。

(2)    破解初始金币值,使之达到一个足够用来购买的数值。

我一开始想到的是第一种方法。可是修改后运行不了,logcat查看发现有VerifyError错误,以为有签名校验?搜索signature字符串,发现很多验证signature的地方,尝试把这些地方的返回值修改为真不管用。 

后来重新反编译,不进行任何修改回编译,安装能正常运行,所以确定不是签名校验(现在想想也不一定啊,这只能证明在加载的时候没有签名验证啊)。暂时放弃,试试第二种方法吧。

  由于没有多少破解游戏的经验,所以我想当然的认为金币的初始化应该是在程序初始运行的时候加载的,所以先看看MainActivity。看完了整个MainActivity.smali文件都木有找到线索,不过还是有点其它的收获,发现了开始运行时的游戏推广广告加载代码:

如果我们把判断Berry King是否安装的函数isAppInstalled的返回值改为TRUE,那么我们就不用安装该游戏也能获取到200金币了。不拿白不拿,果断将const/4 v0, 0x0改成const/4 v0, 0x1,重打包,签名安装运行,开始的推广广告就没出息了,并且显示安装了Berry king,加200金币。

加200金币是远远不够的,那我们应该从哪里去找金币初始化的地方呢?金币是要花钱购买的,如果我们搜索coin,money等关键词是不是会有收获呢?果不其然,在MoneyModel.smali文件中发现了金币的初始化代码。

MoneyModel类在构造函数中将money初始化为100,这100应该就是指的金币了。我们只需修改这个值就行了。我把它修改成了我的QQ号,如图所示(由于Java的float型不知道怎么转换成smali数值的,我是通过自己写一个包含该数据的apk,然后将其反编译出来得到的)。 

打包,安装运行,可以看到破解成功了。左上角显示的金币数量约等于我的QQ号(加上原来破解游戏推广广告得到的200,貌似还多了几十个,不知道怎么回事,所以说是约等于)。现在我们已经有足够的金币数量来玩游戏了,是不是很爽啊。

不过,破解到此还木有结束。在玩的过程中,发现有广告弹出(如下图所示),老不爽了。我们还得把广告去掉。

  我们在反编译的文件中发现com/google/android/gms/ads包,从而可以确定为GoogleAdMob广告。记得AdMob请求广告的函数为loadAd(),如果注释掉该方法应该就不会弹出广告了。于是搜索所有调用loadAd()方法的地方,把这些语句都给注释掉,重打包运行发现还是有广告弹出。胡乱捣腾了一阵,依然没有结果。没办法,只好查看Google Mobile Ads SDK,看添加广告的示例代码,从中查找线索。后来发现添加广告都需要通过setAdUnitId方法设置一个“中介ID”,如果没有这个“中介ID”,广告是否还能运行呢?果断注释掉调用setAdUnitId的代码,重打包运行,发现广告没有了。

  注意:重打包的时候如果提示:无效寄存器,必须在0到15之间,那么就必须对寄存器进行类似如下转换:

move-object/from16 v2, p0

原文地址: http://www.cnblogs.com/goodhacker/p/4060608.html

“逃离大厦”游戏的破解相关推荐

  1. Unity密室逃脱-逃离房间游戏源码.,支持安卓+IOS双端 unity2021 C#语言开发

    Unity密室逃脱-逃离房间游戏源码.,支持安卓+IOS双端 unity2021 C#语言开发.完整的源码可直接运营.拿来学习研究和二次开发都很不错. 源码下载 unity密室逃脱-逃离房间游戏源码C ...

  2. 关于win8应用商店的tiny troopers游戏的破解

    关于win8应用商店的tiny  troopers游戏的破解 最近闲来无事,于是在win8应用商店闲逛,,虽然不常用metro界面,,但是每次去应用商店都会有惊喜,,这不,这次就发现了tiny tro ...

  3. 同一个世界游戏 算法破解

    同一个世界游戏 算法破解 1.游戏编码保存方式 2.破解思路 3.代码 4.测试结果 5.注意点 1.游戏编码保存方式 将游戏用二维数组保存,例如下图保存为 {0, 1, 1, 1, 1, 0}, { ...

  4. 浅谈LZSS与游戏图片破解

      业余游戏制作者最头疼的就是没有美工的支持了.很多业余游戏制作所使用的图片都是来自于网上的很有限的一些图片资源,然而这些图片并不能完整配套,所以业余游戏的画面往往显得单调或者搭配不协调(使用多个不属 ...

  5. cocos2dx android游戏防破解总结

    前言: 在当今安卓应用井喷的年代,会有很多优秀的应用脱颖而出,但是赚不赚钱就很难说啦.也许有些游戏能火一段时间,但是面临着一批破解大军,可能游戏刚有起色就被破解了,有广告的会被替换掉ad id,如果是 ...

  6. 游戏存档破解、售卖的危害及解决办法

    相信你在网上冲浪时一定有见过充斥在互联网间隙中--开局满级.无限资源.极品装备.一刀999的"热血"页游广告."我系渣渣辉,是兄弟就来砍我"的经典台词更是一度成 ...

  7. Roguelike游戏成破解重灾区,如何破局?

    如果有一款游戏,会让玩家一遍又一遍的去体验,那会是什么? 上世纪八十年代,一款叫<Rogue>的游戏横空出世,其独特的随机性玩法引领了一众游戏的效仿,被权威杂志"PC WORLD ...

  8. 安卓逆向(Android)之二__《全民捕鱼》游戏内购破解

    安卓逆向之二__<全民捕鱼>游戏内购破解 环境简介 系统:Android 4.4 工具:Windows 10 64bit 夜神模拟器         Android Killer Java ...

  9. 常见Andriod游戏破解搜索关键字

    Andriod游戏破解相关: 爱游戏支付破解: 关键方法名:paysuccess paySuccess 支付成功 PayCancel 支付取消 payFailed 支付失败 onFinished 支付 ...

最新文章

  1. TI IPNC Web网页之网页修改教程
  2. 全球首家!苹果市值达 3 万亿美元,创历史新高
  3. 皮一皮:论北方有多冷...
  4. Python利用pymysql连接Mysql数据库
  5. linux rpm和deb的区别,rpm与deb的区别
  6. ARM处理器工作模式
  7. 亚信安全发布2021年挖矿病毒专题报告,聚焦挖矿病毒进化与治理
  8. 【CCCC】L2-024 部落 (25分),,并查集,模板水题,统计集合个数
  9. ERP原理学习3-5
  10. 域外计算机无法连接远程桌面,如何开启域内计算机的远程桌面连接?
  11. 如何研究Android手机上已安装的一个app
  12. 【C语言】奥运参赛国出场次序
  13. MySQL数据库在Windows系统上安装和基本使用
  14. 选择 conforming 还是 non-conforming ?
  15. iOS经典错误library not found for -lXXX
  16. 传智播客网络营销课程大升级,改变从“薪”开始
  17. PS如何修改文字,数字以及各种常用操作
  18. html控制智能家居,一种通过web控制的智能家居系统的制作方法
  19. 现代版《满城尽带黄金甲》惊现网上!
  20. php架构师之路 知乎,知乎后端开发工程师 交叉面(第一次面试遇到架构师)

热门文章

  1. __attribute__函数的作用
  2. c 运算符重载总结
  3. Ubuntu下使用VSCode的launch.json及tasks.json编写
  4. 常见缓存算法和LRU与LFU的c++实现
  5. leetcode_zigzag conversion
  6. [云炬创业管理笔记]第6章制定创业行动测试5
  7. 组会PPT20200522《Summary of Study and Research from May 8 to May 21》
  8. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170401
  9. LeetCode 795. 区间子数组个数
  10. java过滤结果集方法_QueryRunner类结果集处理的八种方法