往期推荐
AS+smalidea插件动态调式
JEB动态调试
Method Profiling
方法栈跟踪
内购的概念是很好理解,就比如游戏本身是免费的,一般是手机游戏,但是游戏里面会有道具或者金币等需要花钱来购买,这样在游戏内部收费的方式,就称之为内购
一:分析程序内购逻辑
程序逻辑分析=>最重要的是流程分析/流程图=>核心(层次)
关键性信息查找=>静态(整体分析与局部分析)/动态
在分析的过程中,我们会去筛选一些关键信息,通过这些关键信息更快速的去实现想要的功能,
二:内购关键信息
1.内购关键词
如果能够明确游戏是类属以下哪一种的话,就可以在搜索栏直接搜索下列关键词。
和游戏搜索方法名:
onResult,onchinabilling,resulton,Paycenter,Callback。
联通游戏搜索方法名:
OnPayResult,PayResulton,Activity,result,callback。
电信爱游戏搜索方法名:
buySuccess/paySuccess支付成功,buyCancel/payCancel支付取消,buyFailed/payFailed支付失败.
移动mm搜索方法名:
onBillingFinish,Billing,CallBack,onresult。针对以上关键方法搜索无用的情况下,需要对关键onsuccess()函数进行筛选与定位。
支付宝和银行卡方法名: handle,message。
支付宝搜索字符: 搜索字符串“9000”。
360支付: onfinishedon,Activityresult。
4399: notifyDeliverGoods。
2.支付接口
当在支付界面已经初步判断它是以哪种支付方式进行支付时,就可以直接根据该支付接口的关键信息来进行相应操作。
电信支付接口:
logcat字符串定位(Egame支付成功/Egame支付取消/order id)=>搜索字符串,向上分析,回溯分析/函数名替换。
联通支付接口:
logcat字符串定位(Unicom支付取消/Unicom支付成功)=>在下面类修改处理,可以用goto或switch方法。
移动支付接口:
logcat字符串定位(购买道具:[] 成功/购买道具:[] 失败)=>在下面类修改。
3.会产生费用的危险权限
有些游戏在分析的过程中,发现存在以下两种危险权限,必须进行删除,否则即使后续操作都准确无误,可能还是产生相应的费用。
android.permission.SEND_SMS
android.permission.CALL_PHONE
4.特征码
这个关键信息,仅作为了解内容,通信行业的运营商会存在对应的特征码,这个可以帮助大家初步进行一个判断,但作用并不是很大。
中国移动:46000、46002、46007、46020
中国联通:46001、46006、46010
中国电信:46003、46005、46011
三:游戏内购实战
以贪吃蛇APP作为案例,给大家进行具体分析
首先安装贪吃蛇app ,接下来进行购买商品,会弹出弹窗,取消支付,会发现呈现的信息是“支付取消”如下图所示。
看到支付取消,会立刻对应到刚刚讲过的关键词中的电信爱游戏搜索方法名buyCancel/payCancel支付取消,直接进行搜索。
将贪吃蛇app拖到AndroidKiller工具里面进行反编译。打开工程搜索,搜索“支付取消”,结果搜不到,原因是在smali代码里中文采用了unicode编码,所以需要转换成 unicode码,点击大A这里进行转换。然后再次进行搜索,搜索成功,发现一个可疑目标,如下图所示。
随即点击上面的方法框,弹出方法列表,我们发现有四个方法,init构造方法 、 payCancel支付取消的方法、payFailed失败的方法,如下图所示。
paySuccess支付成功的方法如下图所示。
对比支付成功、支付失败、支付取消的方法,点击咖啡图标可以查看java代码,如下图所示。
对比之后,发现里面执行的方法不一样,也就是后面的Failed和Success这里不同,将支付失败和支付取消的方法里面的代码替换成支付成功方法里面的代码,改完之后点击保存,回编译。编译完成之后,卸载原版,安装我们修改之后的版本。安装完成之后我们重新打开进行购买,发现购买成功,如下图所示。
市面上的游戏APP很多,会使用到的内购破解技巧也是不尽相同,同学们要学会分析的思路,根据给到的关键信息进行搜索判断,进行破解。
小结:
通过今天的分享,我们了解了单机和弱联网游戏的内购破解,同时还掌握了单机和弱联网游戏内购破解中的流程分析以及关键点的寻找。
如果你也对安卓逆向感兴趣。可以加下方的群,大家一起讨论问题,或者扫描下方二维码关注公众号,关注回复 “安卓逆向” 获取免费教程
安卓逆向交流学习:1139349849
vx:Yjxiaox