歪歪协议服务器,YY 2015 逆向分析-底层通讯机制

本文详细介绍了网络游戏中的封包结构,包括4字节长度、4字节命令字和数据部分。客户端通过UDP向多台服务器请求IP列表,服务器根据版本号返回相应信息。客户端再从列表中随机选取服务器发送登录请求,接收到0x1501命令后,获取登录服务器的IP和端口。接着,客户端发送密钥交互包,包含RSA公钥,用于后续RC4密钥加密。服务器回应后,正式开始登录过程。
部署运行你感兴趣的模型镜像

YY的封包结构是4字节长度,4字节命令字,剩下的就是数据了,也就是说,根据首4字节就可以将包分割开。但是也有一些其他情况, 比如嵌套包,一个命令字包中又包含了一个或者多个子命令包,这些子命令包有时是独立处理,有时需要用到父包的数据。

首先,客户端先给几个(我这里是4个)服务器发送UDP包,请求IP地址,服务器会根据收到的版本号下发对应的支持此版本号的服务器和列表。

61 00 00 00 1E 73 00 00 C8 00 FF FF FF FF FF FF   a....s..?.......

FF FF 03 01 00 00 00 00 00 00 20 00 35 34 64 37     ........ .54d7

63 62 39 31 35 38 31 38 32 30 39 38 65 38 36 32   cb9158182098e862

66 66 38 39 30 64 62 66 61 33 63 30 00 00 30 80   ff890dbfa3c0..0.

07 00 38 2E 33 2E 30 2E 30 02 00 79 79 00 00 00   ..8.3.0.0..yy...

00 00 00 00 00 00 00 04 08 00 00 00 00 00 00 00   ................

00††††††††††††††††††††††    .

然后其中一个会返回0x741E,返回请求到的IP列表(其他服务器可能也返回了,但是这时客户端收到一个就不再继续接收了)。

注意这里每个包的+4处是命令字(下同),比如这里是0x731E。

客户端从收到的IP列表中随机选几个(我这里是6个)发送登陆请求,其中5个是UDP,1个TCP。包的数据都是一样的。

34 00 00 00 01 14 00 00 C8 00 00 00 00 00 30 80   4.......?.....0.

FF FF FF FF 08 00 62 75 67 73 74 65 73 74 00 00   ????..bugstest..

04 08 00 00 01 00 00 00 00 00 00 00 00 00 00 00   ................

00 00 00 00††††††††††††††††††   ....

响应最快的那个服务器返回0x1501命令,+0C处是反馈结果,当为0xC8时表示一切正常,后面的数据就是真正要登陆的服务器 的IP和Port了;如果为其他值(比如97 01 00 00),表示版本过低,需要升级。

54 00 00 00 01 15 00 00 C8 00 00 00 C8 00 00 00   T.......?...?...

02 00 00 00 70 75 DC EB DA 85 3B 14 00 00 03 00   ....pu????;.....

00 00 91 1F 39 04 51 00 6F B2 91 8A 4D E6 3B 14   ..?9.Q.o???M?;.

00 00 03 00 00 00 94 1F 39 04 54 00 00 00 00 00   ......?9.T.....

01 00 11 00 AB 5B 54 76 00 00 00 00 00 00 00 00   ....?[Tv........

F4 01 00 00††††††††††††††††††   ?...

此时才是真正的登陆过程,一切从这里开始。客户端根据收到的登陆用的IP列表,随机选择一个建立连接,连接成功后,客户端 主动给服务器发送一条密钥交互包,命令字是0x1104或者0x3204(因为登陆时会连接多个服务器,比如验证服务器\频道服务器\好友服务器, 命令字根据类型的不同是不一样的)

53 00 00 00 04 11 00 00 C8 00 40 00 E9 03 40 F2   S.....?@.?@?

4D ED C4 86 32 9B 25 F1 7A D8 94 70 D5 E2 20 6C   M砟??駔財p这 l

F0 B7 AF FD 5A DD A4 A6 F3 CA F5 8C CE 7B 9B CB   鸱Z荬术屛{浰

2D AB 49 45 04 61 93 9C 4F 7D 40 DE E1 E4 8B 19   -獻Ea摐O}@掎鋴

BC 89 C2 E0 76 29 58 2E 2F BB A6 51 01 00 03 00   級锣v)X./沪Q..

00 00 00                                          ...

或者

66 00 00 00 04 32 00 00 C8 00 40 00 E9 03 40 F2  f...2..?@.?@?

4D ED C4 86 32 9B 25 F1 7A D8 94 70 D5 E2 20 6C  M砟??駔財p这 l

F0 B7 AF FD 5A DD A4 A6 F3 CA F5 8C CE 7B 9B CB  鸱Z荬术屛{浰

2D AB 49 45 04 61 93 9C 4F 7D 40 DE E1 E4 8B 19  -獻Ea摐O}@掎鋴

BC 89 C2 E0 76 29 58 2E 2F BB A6 51 01 00 03 13  級锣v)X./沪Q.

00 00 00 13 00 00 00 04 E8 0B 00 C8 00 00 00 05  ......?.?..

00 6C 6F 67 69 6E                                .login

+4处的0x40字节是客户端生成的公钥,即RSA的N;+0x4E处一字节是RSA的E。这个包的作用是通知服务端,下发的RC4密钥使用这个RSA密钥进行加密,

服务器收到客户端的密钥后,返回0x3304\0x1504,以前这个包的key是经过zlib压缩的,现在取消掉了,估计服务器吃不消给优化掉了。

50 00 00 00 04 15 00 00 C8 00 40 00 7B 89 12 1B  P.........@.{...

FE 8F AC 7A BF 02 D4 34 42 D9 52 29 21 EA 0D 13  ...z...4B.R)!...

27 EC C0 11 BB 59 A8 7F 9C 95 AE B7 9C 09 5A 3C  '....Y........Z<

43 A1 55 8E DA A0 2D F6 CA E9 EB F4 DC D3 DC C5  C.U...-.........

64 8E 75 91 AE 32 A4 28 04 88 CA 79 00 00 00 00  d.u..2.(...y....

或者

18 09 00 00 04 33 00 00  C8 00 40 00 22 79 01 D6 .....3....@."y..

58 E0 86 9C A2 57 37 21  89 4B BF 7F C2 F2 BE 64 X....W7!.K.....

d48 00 8B E6 14 82 C3 0E  D0 FF 80 3C 2C 60 F2 DD H..........

7F BA A4 67 17 C1 DA CA  F4 D6 C0 4E B2 EE A7 90 ...g.......N....

23 3E 46 1D D4 A4 B4 E5  91 14 FE F5 C8 08 00 00 #>F.............

C8 08 00 00 04 E9 0B 00  C8 00 00 00 BA 08 B6 08 ................

00 00 06 00 04 00 00 00  FF FF 00 00 17 27 54 08 .............'T.

00 00 78 DA 8D 57 4D 6C  1B C7 15 7E 43 AD 4D 49 ..x..WMl...~C.MI

D6 8F AD C6 86 64 BB 8E  9A BA 46 0E 75 10 5B 76 .....d....F.u.[v

E5 9C 32 4B 8A 22 F5 47  D2 22 25 45 69 22 7B 45 ..2K.".G."%Ei"{E

...后面省略

您可能感兴趣的与本文相关的镜像

Langchain-Chatchat

Langchain-Chatchat

AI应用
Langchain

Langchain-Chatchat 是一个基于 ChatGLM 等大语言模型和 Langchain 应用框架实现的开源项目,旨在构建一个可以离线部署的本地知识库问答系统。它通过检索增强生成 (RAG) 的方法,让用户能够以自然语言与本地文件、数据库或搜索引擎进行交互,并支持多种大模型和向量数据库的集成,以及提供 WebUI 和 API 服务

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值