某厂商游戏协议逆向分析案列

此分析结果适用于某厂旗下部分游戏,比较典型的如某精英,不同游戏协议字段有区别,这里只列出主要的协议格式,以及分析的方式和结果。

改厂旗下游戏,核心交互协议有TCP和UDP两种,进入对战后的游戏协议,数据部分都是加密过的,只有头部协议有一定特征,但是头部协议特征无法区分不同游戏,所以腾讯游戏的识别主要依赖于

登录状态协议。 登录状态协议的交互是在登录进入游戏开始启动,退出游戏后结束。作为一条有特征可分析的长连接,可以作为游戏的应用识别+应用时长统计+应用拦截的规则适用。

下面是一个典型的登陆状态协议

客户端->服务端

0000 33 66 00 0a 00 0a 10 01 00 00 00 00 01 00 00 00

0010 53 00 00 00 00 02 03 00 00 27 10 00 00 00 65 10

0020 02 03 00 00 00 1d 6f 73 65 77 52 30 73 33 4b 65

0030 34 4a 42 6f 58 2d 4b 47 61 36 64 58 44 47 65 58

0040 73 6f 00 00 00 00 00 00 00 00 00 00 00 03 00 00

0050 00 00 00

服务端->客户端

0000 33 66 00 0a 00 0a 10 02 01 00 00 00 01 00 00 00

0010 30 00 00 00 10 02 10 57 53 68 76 72 74 76 35 41

0020 4b 65 66 48 72 58 58 00 00 00 04 00 00 00 00 00

0030 9f ce 99 47 d8 8d 9c 61 5f 7e a8 87 0f d3 be 0e

这条协议不是完全加密的,可以通过以下特征进行匹配。

1,data[0:3] ==336600,可以作为协议的特征。

提取方式:多序列对比

验证方式:多序列对比 + 交互式验证

2,data[3:4] ==0a000a00,这里目前看存在两种值,分别为0a000a00和08000800, 推测语义可能为协议控制信息或者渠道相关信息

提取方式:多序列对比

验证方式:多序列对比 + 交互式验证

3,data[7:1] == 01/02,01为正向数据包,02为反向数据包

提取方式:多序列对比

验证方式:多序列对比 + 交互式验证

4:data[8:8] ==00 00 00 01 00 00 00 ,推测语义为协议控制信息,取值为00/01,具体语义由于只有正向样本,反向样本不足无法确定。但是由于00 01无法作为特征值,所以影响不大

5.data[16:1] 此位置为数据包长度字段,可以通过先验经验人工分析出来,或者通过脚本跑出来

提取方式:先验经验人工分析/脚本分析

6,data[17:13] 02 03 00 00 27 10 00 00 00 65 10 0020 02 03 00 00 00

这段字段比较特殊,可能包含多种含义,可能性比较大的是

情况1:

02:分隔符字段

03:长度字段,后接3个16进制数据,也可能与02组成0203作为分隔符/协议控制信息

情况2:

02:代表登录信息,如QQ登陆,第二个是0303,不是0203,也就是32位内容前这个标志位,如果是微信是0203,如果是QQ则是0303

03:协议控制字段,0203 后面000000ff0000006510代表是ios/android

不管是哪种提取方式,这几个特征值都偏弱,无法作为优质的特征值字段。

提取方式:多序列对比

7,data[30:1]这个位置代表是渠道,例如安卓是65,IOS是66, 65对应的ASCII是A,66是B,此处可能有其他取值,例如海外渠道包,具体取值范围可以通过构造数据包的方式,发送给服务端,根据返回值判断。

提取方式:多序列对比

验证方式:多序列对比 + 交互式验证

此处需要注明,根据交互式验证获取data[30:1]的取值范围后,识别规则可以有选择性的使用这个字段,效果更加精准。

8.Data[34:32],典型的32位加密信息,比较大的可能性是用户cookie相关信息

前面0000001d6f,很多游戏微信登录都是这个内容,所以大概率猜测1d6f是微信登陆,后面内容就算是相同账号,每个游戏也不一样了,应该为加密信息。

QQ登陆的话,则是00000021开头,21是个!,后面内容各个账号都不一样了。就算是相同账号登陆不同的游戏,内容除了开头也是加密信息。

同时可以通过交互式的方式进行验证,如果构造此数据段为非法数据,服务器解密失败后,返回的数据包与其他异常数据包有明显不同,应该为账号信息错误相关错误信息。

提取方式:多序列对比

验证方式:多序列对比 + 交互式验证

9.协议尾部信息:填充部分/校验和,无法作为特征值

个别特例:

1,某跑跑和某忍者这个请求几乎一模一样。某跑跑虽然不是某厂游戏,但是应该接入了某厂互动的系统,这里看看某厂能不能找到开放平台文档

2,某火线协议长度是213,其他内容基本和上面的游戏一致,但是中间多了一些部分

下面是某火线的长连接包,前面336600开头,006610是IOS版本,0203是标志位。0203后面是三个00,然后1d 6f这是微信登陆通用开头,后面是加密数据了。猜测加密数据跟用户id,以及当前申请的游戏的key有关系。

其中红色部分是跟其他游戏所使用协议明显不同部分,猜测为协议拓展数据,可选择使用。

0000 ae b6 d0 07 08 0b 98 46 0a 3c b7 09 08 00 45 00 ®¶Ð....F.<·...E.

0010 00 fd 00 00 40 00 40 06 3d 1b ac 15 eb 06 65 59 .ý..@.@.=.¬.ë.eY

0020 00 6b e1 2b fd f2 26 9d 5e be 7b 53 3e d1 50 18 .ká+ýò&.^¾{S>ÑP.

0030 40 08 a3 bd 00 00 33 66 00 09 00 09 10 01 00 00 @.£½..3f........

0040 00 00 01 00 00 00 d5 00 00 00 00 03 00 40 95 b2 ......Õ......@.²

0050 03 71 62 89 06 8a 96 de ba ac ff f7 4f e6 c6 e3 .qb....Þº¬ÿ÷OæÆã

0060 50 b6 f5 25 b9 12 c1 7d c1 b0 1e 3e 1d b3 00 dc P¶õ%¹.Á}Á°.>.³.Ü

0070 83 51 7e 5d b7 30 ec f3 96 ca 6b be c0 33 f0 43 .Q~]·0ìó.Êk¾À3ðC

0080 38 90 ba 4e 71 15 c1 58 9a 72 1e d8 15 a5 00 00 8.ºNq.ÁX.r.Ø.¥..

0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 ................

00d0 00 00 ff 00 00 00 66 10 02 03 00 00 00 1d 6f 4d ..ÿ...f.......oM

00e0 74 62 71 74 33 6b 49 73 39 73 72 37 57 68 57 59 tbqt3kIs9sr7WhWY

00f0 68 66 61 51 2d 75 46 4d 4b 59 00 00 00 00 00 00 hfaQ-uFMKY......

0100 00 00 00 00 00 01 00 00 00 00 00 ...........

换了球球账号登陆,果然长度从213变成了217,应该是球球账号比wx账号多4位

下面是球球,还是一样,336600 0003 0303(这里是球球登陆)第一次0003后面是一对加密数据,在后面就是006610 然后0303后面跟着加密数据,也是0021开头

0000 ae b6 d0 07 08 0b 98 46 0a 3c b7 09 08 00 45 00 ®¶Ð....F.<·...E.

0010 01 01 00 00 40 00 40 06 3d 14 ac 15 eb 06 65 59 ....@.@.=.¬.ë.eY

0020 00 6e e1 70 fd f2 a8 37 bf b7 24 ea 12 12 50 18 .nápýò¨7¿·$ê..P.

0030 40 08 3a 02 00 00 33 66 00 09 00 09 10 01 00 00 @.:...3f........

0040 00 00 01 00 00 00 d9 00 00 00 00 03 00 40 33 63 ......Ù......@3c

0050 65 f9 36 fd 66 20 b7 36 7f 81 dd 4b a2 cc c4 74 eù6ýf ·6..ÝK¢ÌÄt

0060 82 94 e8 bd d4 cb 8b 69 0e c4 31 e7 cb 91 05 47 ..è½ÔË.i.Ä1çË..G

0070 b6 d1 45 ee 3d e9 15 c0 84 ee c7 1d 9e cd 32 9a ¶ÑEî=é.À.îÇ..Í2.

0080 0c 41 c1 bc 2c 4f 96 17 dd 0f 7a 44 7f 91 00 00 .AÁ¼,O..Ý.zD....

0090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

00b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................

00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 ................

00d0 00 00 ff 00 00 00 66 10 03 03 00 00 00 21 43 45 ..ÿ...f......!CE

00e0 30 37 41 39 46 39 43 38 34 41 41 32 32 36 39 33 07A9F9C84AA22693

00f0 41 35 39 46 36 44 43 42 31 42 42 45 46 42 00 00 A59F6DCB1BBEFB..

0100 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 ...............

0000 ae b6 d0 07 08 0b 98 46 0a 3c b7 09 08 00 45 00 ®¶Ð....F.<·...E.

0010 00 81 00 00 40 00 40 06 7a 6b ac 15 eb 06 b4 61 ....@.@.zk¬.ë.´a

0020 74 8e e2 57 7d 9b 84 20 1b 75 57 68 59 4a 50 18 t.âW}.. .uWhYJP.

0030 80 c7 cc fb 00 00 33 66 00 0b 00 0b 10 01 00 00 .ÇÌû..3f........

0040 00 00 01 00 00 00 59 00 00 00 00 02 03 00 00 00 ......Y.........

0050 ff 00 00 00 66 10 03 03 00 00 00 21 45 32 41 46 ÿ...f......!E2AF

0060 41 46 35 42 45 33 38 30 46 30 41 39 41 37 42 39 AF5BE380F0A9A7B9

0070 31 37 30 41 36 46 44 39 42 34 45 46 00 00 00 00 170A6FD9B4EF....

0080 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 ...............

3,某忍者周年这个游戏有点特别,包内容如下:

在16:1这个偏移上的数字是d8,是216.这个216是整个tcp.payload的长度,同理微信登陆时212,也就是d4。有点奇怪,跟其他游戏的协议有所区别。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容