好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 Red_0range 于 2017-2-28 14:20 编辑
大圣觉醒-内购破解流程展示
Written_by:Red_0rang
论坛的提醒功能太鸡肋,有意图讨论问题的请给我站内信谢谢。
0x00.前言
图片难传,详细图片流程请见附录文档
简单的练手项目,不是很难。姿势一般,欢迎提供建议。
游戏的主要玩法是弹幕类闯关,坐骑即为武器为主要氪金项目。
进入游戏,有一段亘长的游戏指导,因此主要破解目标为游戏内购破解
用到的工具:
监视器Android Studio自带的monitor
监视器反汇编 Android Killer
模拟器 夜神模拟器
比对软件 beyond compare
0x01.简单游戏内购破解
夜神模拟器在联网的环境下去自动破解部分简单游戏,先在断网模式下分析
打开monitor,再打开夜神模拟器//注意顺序(注:monitor与android studio不要同时打开)
Apk拖拽安装打开,monitor找到了这个游戏名类似的包名
发现有两个:
com.ducheng.dashengjuexing.yyh
com.ducheng.dashengjuexing.yyh:unicomptsrv
分别添加监视器,之后在监视器中查看收发包即可
一段蛋疼的指导教学之后进入氪金界面点击购买宝石,在monitor中查看接收的包
监视器中发现了有价值的信息
购买失败后的界面
购买流程中的收发包现在两个思路:
搜索字符串
搜索函数
先搜索字符串原apk拖到Android Killer后搜索
先进行编码转换
转码后ctrl+f搜索无结果
再搜索收发包中的CmGamePayCallBack,发现其实质为一字符串(log日志)
成功找到后查看源码
发现时期就一switchcase语句
在分析反编译发现编译器分别用pswitch_0和pswitch_1表示支付成功/失败的两种情况
并用goto进行判断跳转,那么简单的将pswitch_0中的内容覆盖pswitch_1中的内容
或者将packed-switch 下的内容改为:pswitch_0:pswitch_0
Ctrl+shift+s全部保存,重新编译文件
找到编译后的文件,打开夜神重新安装一段蛋疼的指导动画之后。。。。重新购买,虽然提示支付失败(之后再优化),但发现可以成功充值
0x02.进阶达成购买宝石目的之后还要解决购买弹窗的问题幸好一次动画之后就不需要再反复观看了,我暂时也没办法修改跳过新手教程先清空一下monitor的log窗口,之后点击购买钻石弹出窗口后分析调用
点击支付后的信息
提示支付成功后的信息现在,思路与套路的时间:分别分析Opay-startPay与CmGamePayCallBackOpay-startPay找到三个,经分析是第一个
同时再将“支付成功“和”支付失败“的字样转u搜索发现支付成功在a class中,且只有一个
Opay-startPay所在的函数中先调用了a类,之后用生成了一个d支付回调类
再继续分析d类
我们可以进入UnipayAccountPlatform进行修改让它不生成界面,而这样做比较麻烦本来打算用简单的goto修改跳转以及参数,这里没有达成这个目标,作罢也可以将取消支付改成支付成功的内容
这样我们点击取消按钮就可以得到宝石了最终修改后的反编译的代码如下(理解思路)
0x03.总结
我把个人的破解流程总结如下:
不过我认为最大的总结是,这次程序的信息都是通过android.util.log类找到的,但是没事干嘛要打印日志信息呢,说明这个软件就是拿来练手的。。。
分析报告:http://pan.baidu.com/s/1gf9QytH 密码:7oib
原apk链接:http://pan.baidu.com/s/1boZ0J3D 密码:1zf7 |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|