设为首页
收藏本站
切换到宽版
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
社区
BBS
DNF单机
游戏单机独立站
独立的阿荣游戏单机分享网站
搜索
搜索
热搜:
阿荣社区
DNF单机
DNF台服
本版
帖子
用户
阿荣社区
»
社区
›
游戏中心
›
地下城与勇士【dnf台服】
›
抽丝剥茧-拆解韩服55端-5
返回列表
发新帖
查看:
4
|
回复:
4
抽丝剥茧-拆解韩服55端-5
火...
[复制链接]
阿苏
阿苏
当前在线
积分
175575
6098
主题
5万
回帖
17万
积分
神功绝世
积分
175575
关注TA
发消息
发表于
昨天 21:00
|
显示全部楼层
|
阅读模式
从这篇开始,我们开始学习如何拆分包体,需要一定的基础,不然看起来会有些吃力。这个篇章我们达到的目的是正常进游戏进副本回城,把客户端的基本流程跑通,其他的东西都是锦上添花而已,以后你们自己去慢慢调试优化即可
思路从哪里开始呢!先处理好角色列表吧!
接上篇,从上篇我们用frida将封包提取出来后,用台服登陆器登录游戏得到角色列表大致得到这些封包信息,看起来很多,但是实际上我们暂时不需要用到这么多协议,关键的协议就2个,ENUM_CMDPACKET_GET_USERINFO和ENUM_NOTIPACKET_USERINFO,封包工具上面告诉我们,当用户发送 ENUM_CMDPACKET_GET_USERINFO(获取用户信息),服务端就返回ENUM_NOTIPACKET_USERINFO(用户信息通知),然后我们就看到客户端显示列表了,说明关键协议点在这里,我刚开始分析的因为思路错了在这里卡了5天。各种如何排错就不细讲了,浪费大家时间,很多人研究卡在这里主要原因是这个包在客户端上面处理是存在多个分支的,也就是说它不是一个包对应一个功能,再加上F5伪代码看起来也比较长,所以分析的时候难免会被带偏。关于客户端处理这个协议回执的地方在 0x0418836,伪代码大致如下
前面篇章我也提过,客户端在读取封包的时候会根据需求来读取不同长度的字段数据,比如说像我们这里的Packet_ReadByte Packet_ReadWord 大体上是我根据读取封包的长度进行命名的方法,也不用全部看完,看我黄色框住的地方,也就是说如果读取到不同的子协议id,那么将会导致客户端的执行路径,从而实现不同的功能,这个字段来源于整个封包包体的第一个字节。
额外知识:通常一个方法中多个分支逻辑如何快速拆解,我们可以采用代码跟踪去分析,现在的情况是我们并不知道它原始封包结构是怎么样的,我们当前有了tcp服务端,可以通过它来伪造封包结构然后单步追踪代码,需要来回启动客户端分析,这种很费事。我比较推荐另外一种东西,unicorn,通过将这个协议分支的代码提取出来,然后利用它的自动化跑所有分支流程,将分支进行平坦化处理,再进行代码染色,这样梳理出来流程会清晰很多(这步不是必须的,只是逆向的一种技巧,不懂也没有关系)
另外一种思路,既然我们现在知道服务端是通过ENUM_NOTIPACKET_USERINFO协议来更新客户端角色列表的,我们就去服务端上看看服务端收到ENUM_CMDPACKET_GET_USERINFO然后是如何打包出来用户信息的逻辑。接下来我们切换到服务端ida视角
1.DisPatcher_GetUserInfo::read@0x81c3d46
2.DisPatcher_GetUserInfo::process@0x81c3dd8
DisPatcher_GetUserInfo::read 这里是读取客户端封包内容效验的逻辑,也就是说验证部分,这并不是我们需要的地方
看看处理过程
跟进去get_user_info看看逻辑 注释都写好了
接下来我们再跟进去看看这个CUser::make_basic_info 参数为2到底是打包什么数据,大致上我们就可以猜出来客户端的逻辑了
核心内容在 0865BE31这个位置,伪代码大致如下,因为篇幅问题,我截取一部分
部分注释有点不对,因为我当时也是一边注释一边写代码的,毕竟版本不同,但是逻辑大体不会差太多,这也就能解释了客户端的列表大概是怎么产生的了
整体来说大致上分为,有多少个角色槽位,每个角色的基本信息是什么(名字 职业 等级 装备 状态)等等一堆乱七八糟的信息
接下来我们伪造一个角色列表包吧 → 发送 RESPONSE (USERINFO 简略角色填充) (36B)
0000 00 02 24 00 00 00 02 01 00 02 00 00 00 00 00 02
0010 03 28 01 00 02 09 7f 7a 00 0a ad 65 00 01 00 00
0020 00 00 00 01
00 02 对应着我要发送的包头
24 00 00 00 对应着整个包大小,客户端通过这个字段就知道这个包接收完整了
后面就是包体数据,你们自己慢慢去拆解字段吧(因为是模拟端,不保证每个字段含义都正确)
客户端的效果大致如下
看着很复杂,其实一点也不简单,只要你不怕困难,就还有更大的困难等着你[表情:微微一笑][表情:微微一笑]
阿荣社区欢迎你(bbs.vul7.com)
回复
使用道具
举报
阿荣社区采集员
阿荣社区采集员
当前在线
积分
171983
4990
主题
5万
回帖
17万
积分
神功绝世
积分
171983
关注TA
发消息
发表于
昨天 21:00
|
显示全部楼层
神牛小号[表情:阴险]
阿荣社区欢迎你(bbs.vul7.com)
回复
支持
反对
使用道具
举报
阿荣社区采集员
阿荣社区采集员
当前在线
积分
171983
4990
主题
5万
回帖
17万
积分
神功绝世
积分
171983
关注TA
发消息
发表于
昨天 21:01
|
显示全部楼层
拆分当前很火的90CN不好吗?
阿荣社区欢迎你(bbs.vul7.com)
回复
支持
反对
使用道具
举报
阿荣社区采集员
阿荣社区采集员
当前在线
积分
171983
4990
主题
5万
回帖
17万
积分
神功绝世
积分
171983
关注TA
发消息
发表于
昨天 21:01
|
显示全部楼层
直接重写一个怀旧服 多端互通的
阿荣社区欢迎你(bbs.vul7.com)
回复
支持
反对
使用道具
举报
阿荣社区采集员
阿荣社区采集员
当前在线
积分
171983
4990
主题
5万
回帖
17万
积分
神功绝世
积分
171983
关注TA
发消息
发表于
昨天 21:02
|
显示全部楼层
看不懂,但是感谢台吧所有大佬们
阿荣社区欢迎你(bbs.vul7.com)
回复
支持
反对
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
快速回复
返回顶部
返回列表