吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11601|回复: 50
收起左侧

[Android 原创] 分享一个游戏盒子,登录协议分析!

  [复制链接]
yutao531315 发表于 2020-3-26 03:03
大家也多多送点免费热心哈,我也有动力继续更新  
本人技术水平有限,因为我在分析的时候是通过word 文档写出来的,分析流程是在word文档里面完成的。这里图片没有,我文字流程上传到附件里面的,

此文仅限学习交流,因为分析得比较仓促,word文档只是我在边分析,边写出来的,里面全部都是个人想法


POST https://mapi.4399api.net/user/box/android/v1.0/log-in.html HTTP/1.1Content-Length: 173Content-Type: application/x-www-form-urlencodedHost: mapi.4399api.netConnection: Keep-AliveUser-Agent: 4399GameCenter/4.7.0.26(android;xiaomi 8;5.1.1;540x960;WIFI;1322.352;a4399)Accept-Encoding: gzipmauth: mareacode: 422800mauthcode: SM-DEVICEID: 20200326001043964fd95e7eddf8c9488cb8764cd01bc80181881b00f7a24em-id: 00%3A81%3Aa7%3A06%3Ac1%3A43a-id: cf291fb402b63fece-id: 865166028184599mdeviceId: 865166028184599pauth: s-id: 460005523373818mudid: 1094gpgEdBptNoZEa0tMUf606
dateline=1585152691&deviceIdentifier=865166028184599&info=1&model=xiaomi+8&password=lKbiScPzO7%2BARbqYcynHTQ%3D%3D&sign=0809033c79e0897036c8abef08b67371&username=yutao531315
第一步,进行抓包操作。看到关键字段,password  字段,密码字段,采用加密算法是  贝斯64算法
sign name 未加密定位按钮事件方法方法1  通过搜索网址信息v1.0/log-in.html  在类中位置是  Lcom/m4399/gamecenter/plugin/main/controllers/user/LoginFragment; ,定位到 onClick(Landroid/view/View;)V 关键 方法
这里我们就找到突破口了,这是我们还通过另外一种方式来定位关键点,主要是用于灵活定位关键点,采取多种方法方法2 通过ui分析工具,抓取到按钮id名称,通过搜索名称,索引到按钮id ,接着搜索按钮id 0x7f3b0729   同样可以定位到关键点,
关键点,onclick 按钮事件定位到了以后,接着就要查看java代码。找到相对应的类  Lcom/m4399/gamecenter/plugin/main/controllers/user/LoginFragment;
分析java 逻辑。OnFocusChangeListener 成功进入到 java层逻辑 代码,LoginFragment 是继承自a方法,接口 按钮监听事件,以及OnFocusChangeListener 处理控件焦点改变的事件

通过onclick 事件里面的 login_button  按钮,定位到此处是我们点击登录按钮调用的逻辑
通过索引,定位到此处是设置 ,Password  以及name 的值。 继续跟踪。进入loadData 类
看到 super 关键字,调用loadData 方法继续进入
看到通过层层定位,找到了一个抽象方法
   public abstract void buildRequestParams(String str, ArrayMap arrayMap);
这个因为是 这里是实现的抽象方法 ,这个类也是抽象类buildRequestParams
抽象方法表示的是 ,定义却未实现的类,
同时抽象方法所在的类,也要用abstrac 进行修饰,说明是抽象类,
抽象类是不能直接进行调用的,需要子类继承自抽象类,而抽象类方法的实现,在子类实现
成功找到抽象方法定义位置,调用了buildRequestParams
   成功定位到sig字段位置
调用了buildSignValue 方法
  
而继续通过,AppNativeHelper  字段调用getServerApi
public static final native String getServerApi(String str);看到了一个native 修饰的方法,说明sig 字段是在so层实现的。到这里,我们就已经把sig 字段来源定位出来了。 通过java代码分析,得出程序是调用 libm4399.so   getServerApi(String str);  传入的参数是一个str 字符串 而str 字符串集,是通过这个算法得出的,具体查看传入的字符串是什么值,可以通过hook    public String buildSignValue(String str) {        return AppNativeHelper.getServerApi(str);} 这个方法打印参数信息,hook代码这里就不写了,比较长当然也可以通过动态调试small 代码查看。


!分析到这里以后,此协议关键字段,sig的来源,就已经理清楚了,下面还有一个pasword字段。其实通过之前的分析,我们已经看到了,password 的字段的来源,但是我们本着寻根问底的原则,一定还是要跟着程序的执行流程,寻找突破点。
通过跟踪,发现还是调用了一个抽象方法。 找到其实现的位置。

Passward 字段这时候也就出来了,很明显看得出来是 通过dexcbc算法来实现


Native 修饰的关键词,都是通过so 来实现的
到这里4399 java层逻辑就分析完了。























POSThttps://mapi.4399api.net/user/box/android/v1.0/log-in.html HTTP/1.1Content-Length: 173Content-Type:application/x-www-form-urlencodedHost: mapi.4399api.netConnection: Keep-AliveUser-Agent:4399GameCenter/4.7.0.26(android;xiaomi 8;5.1.1;540x960;WIFI;1322.352;a4399)Accept-Encoding: gzipmauth: mareacode: 422800mauthcode: SM-DEVICEID:20200326001043964fd95e7eddf8c9488cb8764cd01bc80181881b00f7a24em-id: 00%3A81%3Aa7%3A06%3Ac1%3A43a-id: cf291fb402b63fece-id: 865166028184599mdeviceId: 865166028184599pauth: s-id: 460005523373818mudid: 1094gpgEdBptNoZEa0tMUf606 dateline=1585152691&deviceIdentifier=865166028184599&info=1&model=xiaomi+8&password=lKbiScPzO7%2BARbqYcynHTQ%3D%3D&sign=0809033c79e0897036c8abef08b67371&username=yutao531315 第一步,进行抓包操作。看到关键字段,password 字段,密码字段,采用加密算法是  贝斯64算法 sign name 未加密定位按钮事件方法方法1  通过搜索网址信息v1.0/log-in.html  在类中位置是 Lcom/m4399/gamecenter/plugin/main/controllers/user/LoginFragment; ,定位到 onClick(Landroid/view/View;)V 关键方法 这里我们就找到突破口了,这是我们还通过另外一种方式来定位关键点,主要是用于灵活定位关键点,采取多种方法方法2 通过ui分析工具,抓取到按钮id名称,通过搜索名称,索引到按钮id ,接着搜索按钮id 0x7f3b0729   同样可以定位到关键点,
关键点,onclick 按钮事件定位到了以后,接着就要查看java代码。找到相对应的类
Lcom/m4399/gamecenter/plugin/main/controllers/user/LoginFragment;
分析java 逻辑。OnFocusChangeListenerfile:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image030.jpg

Native 修饰的关键词,都是通过so 来实现的

到这里4399 java层逻辑就分析完了。


哦 对了,这里应该搞个总结,
总的来说,我们是分析了,password 字段,跟sig字段的来源,password  是通过加载libm4399.so  调用里面的

desCbcEncrypt(String str);  这个方法来得到加密密码



sig 字段是  getServerApi(str);  字段获取,都是在so层实现的。


要是大家觉得还行,评分超过50 + ,我会在下面的时间在把  so层动态调试,给走一遍。!希望能给予大家一些帮助, 谢谢大家啦

















4399游戏盒登录协议分析.zip

296.81 KB, 下载次数: 87, 下载积分: 吾爱币 -1 CB

完整分析流程

免费评分

参与人数 9吾爱币 +13 热心值 +8 收起 理由
qtfreet00 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
nws0507 + 1 + 1 下次好好排下版,继续好评
KevinStark + 1 + 1 热心回复!
yy0400101 + 1 我很赞同!
goblinbear + 1 我很赞同!
deepdarkfantasy + 1 + 1 我很赞同!
Kxt163 + 1 + 1 热心回复!
lzk21cn + 1 + 1 谢谢@Thanks!
芥末芥末 + 1 热心回复!

查看全部评分

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

你与明日 发表于 2020-3-26 03:33
这排版,H大看到要打人
 楼主| yutao531315 发表于 2020-3-26 08:58
各位 都说排版没弄好,因为 我是大半夜 写出来的,不想 重新写一遍,协议分析,我上传附件了,里面,都是排版好的 ,
zkt190 发表于 2020-3-26 03:37
xytwlh 发表于 2020-3-26 06:10
看的云里雾里
q10123 发表于 2020-3-26 06:46
没看懂。。
hyoulin68 发表于 2020-3-26 07:04
这排版。。。。。。。。。
sharokku4869 发表于 2020-3-26 07:25
感谢大佬分享教程,小弟不明觉厉
pale123 发表于 2020-3-26 08:03
虽然不懂,但也要回复一下子
q6378561 发表于 2020-3-26 08:13
你排版不重新弄一下的话,+5都不会有
Tewq9855 发表于 2020-3-26 08:15
这是啥
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 18:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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