吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3982|回复: 24
收起左侧

[Android 原创] 某气骑士 android 安全技术分析

  [复制链接]
zwx117105 发表于 2021-9-2 16:01
7月注册论坛后,第一次发帖。 费时间4天。完成对元气骑士的安全分析

支付取消后。

支付取消后。

如图:购买付费角色,取消支付后 的界面

工具篇
        Fiddler(网络调试器) :所有的apk网络请求都会经过fiddler ,从中我们可以看到请求方式 get 或者post。请求参数和返回结果, 这个对于我们分析很有帮助。
        电脑上用的AndroidKiller 和 手机端NP管理器。功能很强大,包括但不限于注入日志信息(可以调试程序),apk签名,apk二次打包等功能。本案例中 主要用到也就是这个几个功能。
        android studio logcat 查看日志信息。 这里为了方便直接用android 开发工具。 本案例中,就是程序输出参数信息,打印到控制台,帮助分析程序流转过程。
分析过程:
首先既然是支付肯定是联网的,顺其自然就想到使用Filddler 查看调用的网络情况。配置一番后,连接手机,打开游戏,点击购买按钮后,fillder如下下界面:


xx.jpg
大家请看里面有两个请求
第一个请求 结果 返回的是   orderId=20210902xx2605319330xx。返回的是订单id。
第二个请求的参数中包含了 orderId。 结果 返回的是  {"code":0,"msg":"wait for payment","data":[],"sign":"S3b\/gv3wD5NItvUjbNx+Utvve1UmWIF+666+\/AdxcVmI5blKtE4W01hAo8B3qMLw4UnJkgVD0LumtUYHrcySRLaw0yilMIk="} 貌似返回的是支付结果。这里不着急,慢慢往下看。
既然是请求,我用android kill 全局搜索 fnsdk.4399sy.com 结果如下。
image.png
我在思考,这个东西不会就这么简单的给你,一般都采用了加密方式来使用的。 经过很久的折腾以后,我终于发现了一个类 com.ssjj.fnsdk.lang.SsjjFNLang

image.png
由此得出 所有的url请求都在这里。
由于本人的是小米手机,里面集成自动登录和支付功能。我在想要不要去小米游戏服务中心去找一找线索,查找了小米提供的游戏支付sdk的文档里面的一句话, 让我找到了方向。

“网游创建充值订单时,先要在游戏服务器端生成一个cpOrderId,然后再由客户端发起充值,
因充值流程可能会耗时数分钟,所以当用户充值返回后一定要利用此cpOrderId到CP服务器上进行查询以便确保是否充值成功;
此外,如果服务器端收到小米游戏服务器的充值回调,也要通知给客户端,以便客户端及时将虚拟物品给用户“

通过整理得出支付流程(网络请求):
第一步 这个是向服务器提支付请求,服务器会返回一个 orderid
第二步 把第一步返回结果orderid作为参数,向服务器发出支付情况确认,返回的是 {"code":0,"msg":"wait for payment","data":[],"sign":"S3b\/gv3wD5NItvUjbNx+Utvve1UmWIF+666+\/AdxcVmI5blKtE4W01hAo8B3qMLw4UnJkgVD0LumtUYHrcySRLaw0yilMIk="}
第三步  对订单进行一个确认

整理思路后,开始研究代码。


登出以下支付过程:
ActivityWrapper4399.pay -> SsjjFNDjPayManager.djpay-> 执行网络url (第一步的orderid申请)->
ActivityWrapper4399.checkOrderLoop->SsjjFNDjPayManager.djCheckOrderLoop->执行网络url(第二步的支付情况查询)->
通过com.ssjj.fnsdk.core.cz.e 处理回调函数-> ActivityWrapper4399$18$1 回到总的回调处理后-->ActivityWrapper4399.confirmOrder 确认订单 ->
SsjjFNDjPayManager.djconfirmOrder ->执行网络请求(第三步的订单确认)->通过com.ssjj.fnsdk.core.cz.f 处理回调函数
->ActivityWrapper4399$19$1 中对 orderID 和productid 进行判断传值后,获取游戏道具成功
修改方法:
.class Lcom/ssjj/fnsdk/core/cz/e;在第二步访问服务器接口回调以后,改变条件分支判断,进入正常支付成功流程。触发第三步 订单确认阶段

.class public Lcom/chillyroom/plugin/wrapper4399/ActivityWrapper4399; 这里面confirmOrder 方法回调中。发现
image.png
只有orderId 而没有productId是无法成功获取道具的。 现在你成功就差一步。该怎么办呢?经过一个上午的思考,发现ActivityWrapper4399这个类pay()方法里面有productId输出。于是
我将pay方法里面的 productId 作为结果赋值给 ActivityWrapper4399这个类的静态变量(自己编写的)。截图如下:
lADPDhYBRFAg2NPNCWDNBDg_1080_2400.jpg
ttt.jpg
最终实现了元气骑士的安全分析。大家有什么可以一起交流。

image.png
image.png

免费评分

参与人数 15吾爱币 +18 热心值 +12 收起 理由
暗影夺魄 + 1 热心回复!
dalilili + 1 + 1 大佬给力!!!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
YanJkoo + 1 我很赞同!
zqguang3708 + 2 + 1 谢谢@Thanks!
xhever + 1 + 1 谢谢@Thanks!
景寒杏 + 1 热心回复!
Allian + 1 + 1 谢谢@Thanks!
顾惜海 + 1 + 1 谢谢@Thanks!
YuWenXin + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
fxxxysh010 + 1 + 1 谢谢@Thanks!
myheartwillg + 2 + 1 我很赞同!
KHIUNVN + 1 + 1 用心讨论,共获提升!
卢仙,永远滴神 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
guyinqian + 3 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| zwx117105 发表于 2021-9-3 14:27
away99 发表于 2021-9-3 14:18
没装支付宝和微信,跳转支付宝网页支付取消后木有反应

没有安装支付宝和微信,支付可能走的另外的一个分支,这个要实际的去调试才知道。
away99 发表于 2021-9-3 19:32
zwx117105 发表于 2021-9-3 14:27
没有安装支付宝和微信,支付可能走的另外的一个分支,这个要实际的去调试才知道。

谢谢,我再研究研究
xiaoyue7788 发表于 2021-9-2 21:29
9tai 发表于 2021-9-2 21:33
牛哇牛哇
kez 发表于 2021-9-2 23:15
说起分析自己喜欢的游戏,一下有了动力谢谢分享
头像被屏蔽
yyb1813 发表于 2021-9-3 08:02
提示: 作者被禁止或删除 内容自动屏蔽
fxxxysh010 发表于 2021-9-3 08:50
强啊,学习学习
yumanyu 发表于 2021-9-3 08:52
牛啊,分析得好清楚,厉害厉害!!!赞
yangjunyi 发表于 2021-9-3 09:46
牛啊,分析得好清楚,厉害厉害!!!赞
顾惜海 发表于 2021-9-3 09:58
感谢分享思路
sun12345 发表于 2021-9-3 10:00
学到了谢谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 15:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表