破解Android游戏(一)

破解Android游戏(一)

原版游戏后续两个场景都被锁住的,点击购买后弹窗显示“支付失败,请稍后重试”购买失败。

使用Androidkiller打开该apk,搜索关键字符串,如”支付”、“失败”等,这里对”失败”字符串进行unicode编码后进行查找。

通过分析该MymmPay.smali文件,其中涉及到支付购买功能的方法有payResultCansel()、payResultFalse()、payResultSuccess()这三个,我们需要对购买取消以及购买失败这两个方法进行构造来完成未支付即可成功的效果。

修改程序逻辑可以分为替代法和从Switch分支来修改调用方法

替换法

这里替换的是将支付失败和支付取消这两个方法中的逻辑修改为支付成功的逻辑以此来实现。

payResultCancel()方法中可以看到”购买取消”的字符串

然后将payResultSuccess()方法中的代码替换到该方法中

将其反编译签名后运行查看游戏状态

点击购买后等待一时间即可解锁所有场景

修改Switch分支

可以看到上面三个方法是对购买商品后不同结果的描述,那么程序是如何来判断调用这三个不同方法呢?

我们先来寻找何处调用payResultFalse()方法,对其进行搜索

可以看到这里使用了Switch分支判断调用哪个方法,当case为0时调用payResultSuccess()方法,否则调用payResultFalse()方法

要使得白嫖,一种是case语句中都为switch_0,使得跳转到支付成功方法,另一种就是将switch_1中的语句中的payResultFalse()修改为payResultSuccess()方法。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2024 John Doe
  • 访问人数: | 浏览次数:

让我给大家分享喜悦吧!

微信