安卓逆向:破解某手机游戏商品内购功能

安卓逆向:破解某手机游戏商品内购功能

0x00. 前言

本文介绍的内容,是对某手机游戏进行逆向分析,破解商品内购功能,从而实现不用实际支付就可以完成商品购买;

法律风险提示:本文内容主要为交流和分享安卓逆向技术,严禁用于任何商业用途!

0x01. 环境

Windows 10;

JEB 版本 3.0.0.201808031948 Beta;

雷电模拟器 3.94;

Android Killer V1.3.1.0;

Android Device Monitor 25.2.5;

0x02. 下载

下载游戏

– 链接:https://pan.baidu.com/s/1gYYND0R29xYCxoddM1E8Lw,提取码:m1qu;

下载 JEB

– 链接:https://pan.baidu.com/s/1pQWDjA3_rChRzvVWMEtzgA,提取码:wbfw;

下载 Android Killer

– 链接:https://pan.baidu.com/s/15kWi_-9HCHceoJyrZCswpA,提取码:4bos;

Android Device Monitor

– 在本机 SDK 目录下 sdk\tools\lib\monitor-x86_64 文件夹中;

雷电模拟器,请自行下载;

0x03. 分析

启动雷电模拟器;

安装 apk

adb install apk绝对路径

在模拟器打开app;

打开 cmd 命令行,输入下面的命令;

adb shell dumpsys activity activities

获取 app 的 packageName,结果在下图红框位置;

打开 Android Device Monitor,找到 packageName 对应的 PID;

添加 LogCat 过滤器;

在模拟器上,按照下图所示点击操作 APP:

在 Android Device Monitor 查看输出日志,从日志输出中获取可以入手分析的字符串,如下图;

打开 JEB,Ctrl + F 弹出查找弹窗,输入 请求支付,计费id:,找到目标代码位置;

按 Tab 键,切换为 JAVA 代码视图,分析代码发现 payCancel、payFailed、paySuccess 三个方法都调用了 onResult 方法,如下图;

鼠标双击 onResult,跳至 onResult 方法代码段,通过分析发下如果 onResult 方法第二个参数为 0 则支付成功;

0x04. 修改源码

确定思路:即在源代码中修改 onResult 代码的第二个参数,使之始终为 0,则可以实现不支付就能完成购买;

在 JEB 中找到下图红框位置,org/cocos2dx/cpp/AppActivity 就是源码所在的文件位置;

打开 Android Killer,找到 org/cocos2dx/cpp/AppActivity 文件并打开;

找到 onResult 方法,按下图所示添加代码 const/4 p1, 0,这里的 p1 表示 onResult 方法的第二个变量,这句代码表示 第二个变量恒为 0;

0x05. 回编译并安装运行

回编译 apk,并安装到模拟器上;

重新打开 app,点击要购买的道具任务,在最后一步支付时、点击叉号取消支付,返回主页发现内购成功;

Previous

JS逆向:破解某专利检索网无限反 debug 问题

Next

JS逆向:破解某某文书网反爬虫JS加密策略

相关文章

如何取消qq宠物
365bet网站地址

如何取消qq宠物

📅 08-01 👁️ 4545
流量叠加包怎么开
365bet会员登录

流量叠加包怎么开

📅 02-03 👁️ 5956