內容參考于:?易道云信息技術研究院VIP課
上一個內容 :12.游戲網絡通信存在的問題
現在把游戲網絡的架構看了一個小小的大概,可以用它的接口發數據接收數據了,如果真正想用它這一套東西,真正核心不在于它的接口而在于它的數據包的格式或內容,寫下來就是去解讀它的數據
下圖是之前用來說話的一段數據包:就是默認接收下圖的數據,緊接著游戲里面就收到了說話的內容,這就是模擬服務器去欺騙客戶端,一個例子比如人物跟人打架,摔倒了,摔倒了在客戶端會有一個時間,比如一段時間里不能動,僵直這樣的操作,然后利用數據包,給自己發一個數據包,又站起來了,在客戶端上站起來了,在服務端還沒有,這個時候如果限制不嚴格,在客戶端做的操作就又會發送給服務端,通過這樣的方式就可以做很多事情,這也是研究漏洞的一種非常重要的形式,所以漏洞不僅僅是從客戶端發數據到服務端,也有模擬服務端發數據給客戶端
然后接下來,該怎樣解讀這個數據包?首先上圖中的內容,它說話的內容肯定存在,這個數據是怎樣組織怎樣解讀,可以通過逆向分析去分析,但是通過逆向分析去分析只適用一兩個數據,如果說有大量的數據全部通過逆向分析成本是非常高的,所以要優先進入一個初步分析,然后把那些不能突破的東西再逆向分析。
然后正常來講,客戶端拿到一段數據它會進行解讀,然后不同的數據,它不可能每個數據都有不同的解讀方式,就算它有解讀的方式,那它也必須要有解讀的圖紙,就是說這個東西應該根據圖紙這樣解讀,或者說它沒有這樣的規劃,它就要有一種系統性的解讀方式。
如果它用的圖紙,比如:
A數據包用的a號圖紙解讀,B數據包用b號圖紙解讀,就是把數據包定義成結構體,比如前面兩個代表什么后面兩個代表什么只要放到這個結構體里就行,這也就是說拿到結構體的定義就可以了
系統性的方法:
有系統性的就要破解出來寫成算法,然后用這個系統性方法還原數據去組織數據
數據包只能多看多搞,用文本文檔搞比較類,所以要搞個工具。
工具的功能:
首要要把數據包顯示出來,然后還要可以把選中的數據單獨拿出來顯示方便查看,比如關鍵信息在數據包里一定是有的,但有很多信息不知道它是什么內容,就把其中某段數據選中,比如選中了四個字節的數據,然后就要把這四個字節組合起來的內容顯示出來,如果它是字符串是什么樣子,如果它不是字符串是小數是什么樣子等就是把所有常用的類型都展示出來,然后根據顯示的內容就可以猜測數據包里這四個字節的數據是什么東西
工具的功能劃分:
1.顯示通信數據包內容,根據數據包類型進行分別顯示
2.能夠顯示鼠標選中的區域可能的內容
3.搜索,比如123456它出現在那一段里面
4.把內容寫到硬盤文件
5.可以在不同項目中使用,所有網絡通信就三個元素,第一是數據包,第二是它的長度,還有類型
6.過濾,比如某個數據包解讀好了,比如數據包開頭0x1F是它的特征,這時就把開頭是0x1F的數據包過濾掉