此分析結(jié)果適用于某廠旗下部分游戲,比較典型的如某精英,不同游戲協(xié)議字段有區(qū)別,這里只列出主要的協(xié)議格式,以及分析的方式和結(jié)果。
改廠旗下游戲,核心交互協(xié)議有TCP和UDP兩種,進(jìn)入對戰(zhàn)后的游戲協(xié)議,數(shù)據(jù)部分都是加密過的,只有頭部協(xié)議有一定特征,但是頭部協(xié)議特征無法區(qū)分不同游戲,所以騰訊游戲的識(shí)別主要依賴于
登錄狀態(tài)協(xié)議。?登錄狀態(tài)協(xié)議的交互是在登錄進(jìn)入游戲開始啟動(dòng),退出游戲后結(jié)束。作為一條有特征可分析的長連接,可以作為游戲的應(yīng)用識(shí)別+應(yīng)用時(shí)長統(tǒng)計(jì)+應(yīng)用攔截的規(guī)則適用。
下面是一個(gè)典型的登陸狀態(tài)協(xié)議
客戶端->服務(wù)端
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
服務(wù)端->客戶端
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
這條協(xié)議不是完全加密的,可以通過以下特征進(jìn)行匹配。
1,data[0:3]?==336600,可以作為協(xié)議的特征。
提取方式:多序列對比
驗(yàn)證方式:多序列對比?+?交互式驗(yàn)證
2,data[3:4]?==0a000a00,這里目前看存在兩種值,分別為0a000a00和08000800,?推測語義可能為協(xié)議控制信息或者渠道相關(guān)信息
提取方式:多序列對比
驗(yàn)證方式:多序列對比?+?交互式驗(yàn)證
3,data[7:1]?==?01/02,01為正向數(shù)據(jù)包,02為反向數(shù)據(jù)包
提取方式:多序列對比
驗(yàn)證方式:多序列對比?+?交互式驗(yàn)證
4:data[8:8]?==00?00?00?01?00?00?00?,推測語義為協(xié)議控制信息,取值為00/01,具體語義由于只有正向樣本,反向樣本不足無法確定。但是由于00?01無法作為特征值,所以影響不大
5.data[16:1]?此位置為數(shù)據(jù)包長度字段,可以通過先驗(yàn)經(jīng)驗(yàn)人工分析出來,或者通過腳本跑出來
提取方式:先驗(yàn)經(jīng)驗(yàn)人工分析/腳本分析
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個(gè)16進(jìn)制數(shù)據(jù),也可能與02組成0203作為分隔符/協(xié)議控制信息
情況2:
02:代表登錄信息,如QQ登陸,第二個(gè)是0303,不是0203,也就是32位內(nèi)容前這個(gè)標(biāo)志位,如果是微信是0203,如果是QQ則是0303
03:協(xié)議控制字段,0203?后面000000ff0000006510代表是ios/android
不管是哪種提取方式,這幾個(gè)特征值都偏弱,無法作為優(yōu)質(zhì)的特征值字段。
提取方式:多序列對比
7,data[30:1]這個(gè)位置代表是渠道,例如安卓是65,IOS是66,?65對應(yīng)的ASCII是A,66是B,此處可能有其他取值,例如海外渠道包,具體取值范圍可以通過構(gòu)造數(shù)據(jù)包的方式,發(fā)送給服務(wù)端,根據(jù)返回值判斷。
提取方式:多序列對比
驗(yàn)證方式:多序列對比?+?交互式驗(yàn)證
此處需要注明,根據(jù)交互式驗(yàn)證獲取data[30:1]的取值范圍后,識(shí)別規(guī)則可以有選擇性的使用這個(gè)字段,效果更加精準(zhǔn)。
8.Data[34:32],典型的32位加密信息,比較大的可能性是用戶cookie相關(guān)信息
前面0000001d6f,很多游戲微信登錄都是這個(gè)內(nèi)容,所以大概率猜測1d6f是微信登陸,后面內(nèi)容就算是相同賬號(hào),每個(gè)游戲也不一樣了,應(yīng)該為加密信息。
QQ登陸的話,則是00000021開頭,21是個(gè)!,后面內(nèi)容各個(gè)賬號(hào)都不一樣了。就算是相同賬號(hào)登陸不同的游戲,內(nèi)容除了開頭也是加密信息。
同時(shí)可以通過交互式的方式進(jìn)行驗(yàn)證,如果構(gòu)造此數(shù)據(jù)段為非法數(shù)據(jù),服務(wù)器解密失敗后,返回的數(shù)據(jù)包與其他異常數(shù)據(jù)包有明顯不同,應(yīng)該為賬號(hào)信息錯(cuò)誤相關(guān)錯(cuò)誤信息。
提取方式:多序列對比
驗(yàn)證方式:多序列對比?+?交互式驗(yàn)證
9.協(xié)議尾部信息:填充部分/校驗(yàn)和,無法作為特征值
個(gè)別特例:
1,某跑跑和某忍者這個(gè)請求幾乎一模一樣。某跑跑雖然不是某廠游戲,但是應(yīng)該接入了某廠互動(dòng)的系統(tǒng),這里看看某廠能不能找到開放平臺(tái)文檔
2,某火線協(xié)議長度是213,其他內(nèi)容基本和上面的游戲一致,但是中間多了一些部分
下面是某火線的長連接包,前面336600開頭,006610是IOS版本,0203是標(biāo)志位。0203后面是三個(gè)00,然后1d?6f這是微信登陸通用開頭,后面是加密數(shù)據(jù)了。猜測加密數(shù)據(jù)跟用戶id,以及當(dāng)前申請的游戲的key有關(guān)系。
其中紅色部分是跟其他游戲所使用協(xié)議明顯不同部分,猜測為協(xié)議拓展數(shù)據(jù),可選擇使用。
0000?ae?b6?d0?07?08?0b?98?46?0a?3c?b7?09?08?00?45?00???D....F.<·...E.
0010?00?fd?00?00?40?00?40?06?3d?1b?ac?15?eb?06?65?59?.y..@.@.=.?.?.eY
0020?00?6b?e1?2b?fd?f2?26?9d?5e?be?7b?53?3e?d1?50?18?.ká+yò&.^?{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?......?......@.2
0050?03?71?62?89?06?8a?96?de?ba?ac?ff?f7?4f?e6?c6?e3?.qb....To??÷O???
0060?50?b6?f5?25?b9?12?c1?7d?c1?b0?1e?3e?1d?b3?00?dc?P??%1.á}á°.>.3.ü
0070?83?51?7e?5d?b7?30?ec?f3?96?ca?6b?be?c0?33?f0?43?.Q~]·0ìó.êk?à3eC
0080?38?90?ba?4e?71?15?c1?58?9a?72?1e?d8?15?a5?00?00?8.oNq.á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?...........
換了球球賬號(hào)登陸,果然長度從213變成了217,應(yīng)該是球球賬號(hào)比wx賬號(hào)多4位
下面是球球,還是一樣,336600?0003?0303(這里是球球登陸)第一次0003后面是一對加密數(shù)據(jù),在后面就是006610?然后0303后面跟著加密數(shù)據(jù),也是0021開頭
0000?ae?b6?d0?07?08?0b?98?46?0a?3c?b7?09?08?00?45?00???D....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ápyò¨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ù6yf?·6..YK¢ì?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..Y.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???D....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.aW}..?.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,某忍者周年這個(gè)游戲有點(diǎn)特別,包內(nèi)容如下:
在16:1這個(gè)偏移上的數(shù)字是d8,是216.這個(gè)216是整個(gè)tcp.payload的長度,同理微信登陸時(shí)212,也就是d4。有點(diǎn)奇怪,跟其他游戲的協(xié)議有所區(qū)別。