文章目录
- 环境说明
- 安装apk
- 配置monitor
- 目标测试
- 开始逆向
环境说明
安装apk
游戏apk说明:难以运行在安卓7、安卓5,适合运行在安卓4。不能在手机上运行。
本机已安装的夜神只支持安卓5和安卓7,需要下载2020年5月左右的夜神版本。
安装安卓夜神6.3.0.0,运行“夜神多开器”,点击“添加模拟器”,选择Android/4.4.2,运行模拟器。把apk拖拽到模拟器,安装应用成功。
配置monitor
我们可以使用Windows自带的monitor来查看主机与程序交互的过程,
本地monitor位置:C:\Users\Administrator\AppData\Local\Android\Sdk\tools\monitor.bat。
目标测试
运行游戏,进入商店:
尝试购买商品,返回“支付失败,请稍后重试”。
开始逆向
使用AndroidKiller打开滚动的天空_1.1.0.140.apk,反编译项目:
找到工程搜索模块,搜索相关信息"支付失败,请稍后重试",没有找到;缩减关键字继续搜索"支付失败",找到相关字符信息,双击string查看:
在安卓程序中,中文字符通常被编码成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
:
查看关键代码,看到onFailure()和onSuccess()函数,使用支付成功的函数内容,全部替换支付失败的函数内容:
对修改后的项目进行编译,在AndroidKiller_v1.3.1\projects\滚动的天空_1.1.0.140\Bin
目录下找到滚动的天空_1.1.0.140_killer.apk,拖拽到夜神模拟器(需要先卸载之前安装的版本),安装成功。
效果测试:点击"其他支付",再点击取消,可以看到道具购买成功!