设为首页
收藏本站
切换到宽版
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
社区
BBS
DNF单机
PC游戏
互联网资讯
导读
Guide
门户
Portal
广播
Follow
圈子
Group
动态
Space
淘帖
Collection
日志
Blog
相册
Album
分享
Share
记录
Doing
排行榜
Ranklist
角色扮演
搜索
搜索
热搜:
阿荣社区
DNF单机
DNF台服
本版
帖子
用户
阿荣社区
»
社区
›
游戏中心
›
地下城与勇士【dnf台服】
›
寻微渐进-拆解韩服55端-3
返回列表
发新帖
查看:
4
|
回复:
4
寻微渐进-拆解韩服55端-3
火...
[复制链接]
阿苏
阿苏
当前在线
积分
170048
5590
主题
4万
回帖
17万
积分
神功绝世
积分
170048
关注TA
发消息
发表于
1 小时前
|
显示全部楼层
|
阅读模式
上篇我们说到通过DebugConfig.txt用来拆解客户端,这次我们更进一步收集信息,为后续铺路。在这个系列开篇我们曾经涉及过这里
为什么我说这个地方比较经典和重要呢!因为这个地方涉及到整个客户端和服务端交互的内核,驱动客户端有两类协议,ENUM_CMDPACKET系列和ENUM_NOTIPACKET系列,这点你点开off_9C94E8 跟 off_9C92D0 也是可以确定的,而这个方法你可以理解是客户端分发协议的入口,拿住了这里就能接管所有协议流向。它的调用者来自于客户端的套接字类,此类内部封装了recv(tcp协议交互)用来和服务端进行通讯,上层负责拆包和防止粘连,这个方法负责解密封包。为了方便分析,我们将sub_40C5C0命名为OnServerResponse,sub_418400命名为OnServerNotify。不过这里需要的注意到的就是sub_7DC5D0,这个方法内部会读取一个缓存区,每次读取缓存区一个字节,然后将缓存区指针往后推,为了理解起见,我们将其命名为Packet_ReadByte,缓存区对象命名为g_PacketReadPtr,那么伪代码就变成了
如果你用ida看g_PacketReadPtr的交叉引用,会发现还有不少其他的方法,读取2字节数据,读取4字节数据,读取指定缓存长度,实际上都是客户端对协议包字段拆解的二次封装,都进行相关命名即可,这些交叉引用还有个地方注意一下sub_7DC5C0,这里是设置缓存区指针的地方。其调用者也是在我们截图1这个方法里面,这个方法比较长,我分开贴伪代码
跳过无用代码
为了方便我们模拟端通讯调试封包,我们需要用dll hook掉 XorRorCipher,它的内部是这样的
没什么多说的,直接patch 007B6000这个地址,函数尾部指令是C3 说明无需考虑堆栈平衡,直接用C3即可,当然如果你也可以选择不patch这个方法,自己分析这个方法补齐在你的服务端也不是不行,见仁见智吧。
做完这些你直接写一个tcp服务端就可以正常和我们客户端通讯了,接下来如何让客户端主动连接到我们自己的服务端呢!这点我们可以根据第二篇文件中读取DebugConfig.txt的方法进行上层追溯,看看它是如何区别本地调试模式和网络通讯模式的,于是我们来到另一处位置00409880,打开伪代码看拉到最后,为了方便理解我命名了一下
你可以看到这两个分支点,我们只需要关注第一处圈起来的地方,只要你能正确伪造环境,就能直接让我们客户端连接到我们所指定的服务端了,通过动态追码 发现首要需要保证命令行存在10个或以上的参数即可进入第一层判定,命令行分割符号为? 然后在00409880的头部,我们可以看到有分支点设置g_bDebugMode的值,我们不能让它设置g_bDebugMode为true,让其满足第二层判定。所以经过一顿操作猛如虎,把命令行弄出来就完事了,12?127.0.0.1?7601?test?abcdef?0?60?50000?500?0?0?0?0
基本上到了这里,客户端该处理的工作就已经全部做好了,如果不出意外。此时的你应该可以通过自己写的服务端正常和客户端通讯了。
有了DebugConfig_ParseAndLoad(DebugConfig.txt)拼接躯干,有了DispatchGamePacket(协议分发)拼接神经,下一篇,我们再说说如何找到脑子[表情:捂嘴笑]
阿荣社区欢迎你(bbs.vul7.com)
回复
使用道具
举报
阿荣社区采集员
阿荣社区采集员
当前在线
积分
168722
4993
主题
4万
回帖
16万
积分
神功绝世
积分
168722
关注TA
发消息
发表于
1 小时前
|
显示全部楼层
[表情:真棒]看不懂,但是牛
阿荣社区欢迎你(bbs.vul7.com)
回复
支持
反对
使用道具
举报
阿荣社区采集员
阿荣社区采集员
当前在线
积分
168722
4993
主题
4万
回帖
16万
积分
神功绝世
积分
168722
关注TA
发消息
发表于
1 小时前
|
显示全部楼层
有没有一种可能,现在可以 mcp一把梭
阿荣社区欢迎你(bbs.vul7.com)
回复
支持
反对
使用道具
举报
阿荣社区采集员
阿荣社区采集员
当前在线
积分
168722
4993
主题
4万
回帖
16万
积分
神功绝世
积分
168722
关注TA
发消息
发表于
1 小时前
|
显示全部楼层
手搓服务端吗?[表情:真棒]
阿荣社区欢迎你(bbs.vul7.com)
回复
支持
反对
使用道具
举报
阿荣社区采集员2
阿荣社区采集员2
当前在线
积分
170117
5431
主题
4万
回帖
17万
积分
神功绝世
积分
170117
关注TA
发消息
发表于
1 小时前
|
显示全部楼层
[表情:真棒]顶
阿荣社区欢迎你(bbs.vul7.com)
回复
支持
反对
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
快速回复
返回顶部
返回列表