文章目录

  • 环境说明
  • 安装apk
  • 配置monitor
  • 目标测试
  • 开始逆向



环境说明

安装apk

  游戏apk说明:难以运行在安卓7、安卓5,适合运行在安卓4。不能在手机上运行。

  本机已安装的夜神只支持安卓5和安卓7,需要下载2020年5月左右的夜神版本。
  安装安卓夜神6.3.0.0,运行“夜神多开器”,点击“添加模拟器”,选择Android/4.4.2,运行模拟器。把apk拖拽到模拟器,安装应用成功。

android 手游充值 逆向 安卓游戏逆向_android 手游充值 逆向

配置monitor

  我们可以使用Windows自带的monitor来查看主机与程序交互的过程,
本地monitor位置:C:\Users\Administrator\AppData\Local\Android\Sdk\tools\monitor.bat。

目标测试

  运行游戏,进入商店:

android 手游充值 逆向 安卓游戏逆向_ico_02


  尝试购买商品,返回“支付失败,请稍后重试”。

android 手游充值 逆向 安卓游戏逆向_搜索_03


开始逆向

  使用AndroidKiller打开滚动的天空_1.1.0.140.apk,反编译项目:

android 手游充值 逆向 安卓游戏逆向_搜索_04


  找到工程搜索模块,搜索相关信息"支付失败,请稍后重试",没有找到;缩减关键字继续搜索"支付失败",找到相关字符信息,双击string查看:

android 手游充值 逆向 安卓游戏逆向_搜索_05


  在安卓程序中,中文字符通常被编码成Unicode字符,形式是\uxxxx。使用在线网站https://www.jb51.net/tools/onlinetools/jiemi/uniendecode.htm对"支付失败"进行Unicode编码,得到%u652F%u4ED8%u5931%u8D25。也可以使用AK自带的编码转换器。  将密文中的%替换成\u,得到\u652F\u4ED8\u5931\u8D25$smali文件中寻找相关输出代码,找到OppPay$2$1.smali

android 手游充值 逆向 安卓游戏逆向_android 手游充值 逆向_06


  查看关键代码,看到onFailure()和onSuccess()函数,使用支付成功的函数内容,全部替换支付失败的函数内容:

android 手游充值 逆向 安卓游戏逆向_搜索_07

  对修改后的项目进行编译,在AndroidKiller_v1.3.1\projects\滚动的天空_1.1.0.140\Bin目录下找到滚动的天空_1.1.0.140_killer.apk,拖拽到夜神模拟器(需要先卸载之前安装的版本),安装成功。

  效果测试:点击"其他支付",再点击取消,可以看到道具购买成功!

android 手游充值 逆向 安卓游戏逆向_搜索_08


android 手游充值 逆向 安卓游戏逆向_ico_09