5.網絡游戲逆向分析與漏洞攻防-游戲網絡架構逆向分析-測試需求與需求拆解

內容參考于:易道云信息技術研究院VIP課

上一個內容:模擬游戲登陸器啟動游戲并且完成注入

首先正常分析軟件程序有沒有漏洞,需要通過它的操作侵入,比如買東西,就通過買東西的按鈕它背后有源代碼就看源代碼,沒有源代碼就逆向分析,然后嘗試性的去修改它的參數,然后看看有沒有什么不合理的地方有沒有漏洞,對于網絡游戲來講前面說的東西就沒必要了,因為網絡游戲里不管你是吃藥也好、走路也好,所有操作最后它一定是通過數據包的形式反映給服務器的,所以就直接觀察它的數據包,或者說我們模擬數據包的發送,直接就進行測試,這樣它有什么限制不嚴格的地方就可以看出來了。

游戲客戶端與服務端協作形式:有兩種

1.

????????發送結果型,比如我們吃藥,它的做法是,首先在界面里按了一個吃藥的操作,按下之后生命值就會增加,這個時候在客戶端就會看有沒有藥、有沒有cd、能不能吃,能吃就增加了,本來還有1點生命值吃藥之后100點,這時就要寫到服務器,把100發送給服務器,這個操作存在漏洞,在發送之前這個100我們是可以更改的,這種操作它往往會有加密的技術,防止被修改,但是不管怎樣這種結構就決定了是可以更改的,防止不了,大部分游戲不會采用這種結果,但是也有(某勇士)。

2.

????????這一種由UI的操作吃藥,還是檢測有沒有藥,有沒有cd、能不能吃(這里檢測是為了讓服務端壓力變小),這個時候發送請求吃藥(告訴服務器我要吃藥了),服務器收到吃藥請求就去看服務器上的數據(就是服務器再去判斷能不能吃藥、有沒有cd、能不能吃),服務器驗證完成得出可以吃藥就把數據寫到數據庫里(完成吃藥),然后就給客戶端說吃藥完成了,這樣的過程可以攻擊的點就很少。

????????大部分游戲都是第一種和第二種相互結合的,要明白一個道理,安全的本質不是技術的對決,而是經濟的對決,比如走路這樣的操作,如果服務還是頻繁驗證的話是比較浪廢性能的,走路這種請求會頻發觸發如果服務器還驗證會導致很卡,所以服務器會不得不放棄一些驗證的操作,改用第一種結果式,就是把結果給服務器比如走路的坐標,這就造成了漏洞、

還有本質上用的是第二種,但是第二種它是連續性的,比如要三個第二種操作才能完成一件事,其中一個被人為修改掉也會造成漏洞,不管怎樣說核心的點都在網絡通信的地方。

現在主線任務:

通過逆向分析,找到游戲發送數據,接收數據的過程,這個是很好找的,找到這個過程利用起來是不方便的,因為游戲往往都有加密的過程,所以要找它明文發送數據的位置,因為只有找到這種地方才能很好的利用,找到這種地方之后就可以接收數據發送數據了,這樣就可以既可以欺騙客戶端又可以欺騙服務端,這樣測試漏洞就很方便了,找到漏洞之后要給出修改的建議,就是我們很清楚攻擊什么位置,面對這種地方的攻擊我們應該怎樣防護,現在搞是跟安全有關的事情,然后這樣的測試是很有必要的大量的網絡游戲或者大量的游戲都有這樣的漏洞,比如以前的吃雞(絕地求生)飛天遁地瞬移秒殺千里萬里子彈都是這種情況

游戲數據包的處理流程:

客戶端發送數據:

????????首先ui操作,比如吃藥操作,就會根據吃藥組織一個數據包給服務器,一般組織數據包的地方就是明文,為什么是明文,如果不是明文搞的很復雜,在開發的時候也是費勁,所以組織數據包的位置就是明文,比如01代表吃藥02代表使用技能,然后組織的數據包就是 01 23,這個23就是代表吃的什么藥,然后01代表吃藥,然后02 01,02是使用技能01代表的技能,如果說可以用wpe一類的軟件可以截取到這個數據直接改,就是不去動游戲而是在網卡這個階段,就能把這個東西給截取到,所以游戲往往在組織完數據之后會有一個加密的操作,加密完才發送,然后現在可以看出攻擊的點就在組織數據的位置。

客戶端接收數據:

? ? ? ? 接收數據之后,然后解密數據,然后根據包的內容調用對應的函數(分發數據),然后使用數據(函數執行中),然后現在看攻擊的點就是分發數據這里,然后解讀雖然是明文,但也不是很容易,但是真的可以全部解讀出來以后會發現,大部分逆向工作都不需要做了

游戲網絡通信架構模型:

單線程:

直接看發送數據的這里,首先我們寫代碼是一行一行的,然后調用一個函數之后,這個函數執行完返回之后再繼續往下,然后假設這個函數是發送數據的,如果數據特別大,沒發送完它就會卡住(阻塞),所以這種單線程模式用的比較少,這種模型,通過發送數據往回找可以找到組織數據,從ui操作往后找可以找到組織數據,接收數據時就是通過接收數據往后找可以找到解密數據之后分發數據之前,然后通過使用數據往后找也能找到分發數據前,只要它是這種模型就能找到。

然后使用數據,比如血量增加了,通過血量的變化就能找到分發數據之前


多線程:

它與單線程的不同是加密完數據之后寫到一個緩存里,然后線程b去讀取緩存然后發送數據,這種的從發送數據的位置就找不到組織數據的位置了,然后從ui操作找后面的東西也是找不到,這樣的要找那塊緩存空間,通過緩存空間的讀寫來找

接收數據也是通樣的道理


一般就這兩種架構

游戲網絡通信常見函數:

send、recv 一般用于tcp通信,默認為阻塞型通信。

sento、recvfrom 一般用于UDP通信,它可以直接根據指定ip和端口進行訪問,不行創建socket,微信和qq應該用的就是這個

WSASend、WSARecv 天生異步操作,配合完成端口使用(看這里:iocp完成端口,詳細簡單的完成端口使用)

recv:

recv之后就是處理數據

?WSARecv:

要去找?GetQueuedCompletionStatus 函數,詳情看?iocp完成端口?這里。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696385.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696385.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696385.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TypeScript學習筆記-基礎

一、type 和 interface type和 interface的區別:TypeScript 中文網: 文檔 - 日常類型 type類型別名和interface接口非常相似,在很多情況下可以在它們之間自由選擇。interface 的幾乎所有功能都在 type 中可用,主要區別在于無法重新打開類型…

【PythonGIS】基于Python融合矢量數據(多面合一)

之前發過使用批量合并矢量數據的文章:【Python&GIS】基于Python批量合并矢量數據,正好前段時間有需求把矢量數據進行融合,然后就編了一段融合矢量數據的代碼。今天就和大家分享一下如何使用Python對矢量數據實現融合的操作。 1.定義 首先…

基于Embedding召回和DSSM雙塔模型

文章目錄 基于Embedding召回介紹基于Embedding召回算法分類I2I召回U2I召回 DSSM模型DSSM雙塔模型層次 基于Embedding召回介紹 基于embedding的召回是從內容文本信息和用戶查詢的角度出發,利用預訓練的詞向量模型或深度學習模型,將文本信息轉換成向量進行…

三、創建腳手架和腳手架分析

三、創建腳手架 一、環境準備 1、安裝node.js **下載地址:**https://nodejs.org/zh-cn/界面展示 2、檢查node.js版本 查看版本的兩種方式 node -vnode -version 出現版本號則說明安裝成功(最新的以官網為準) 3、為了提高我們的效率&…

深度學習從入門到不想放棄-7

上一章的內容 深度學習從入門到不想放棄-6 (qq.com) 今天講的也算基礎(這個系列后來我一尋思,全是基礎 ),但是可能要著重說下,今天講前向計算和反向傳播,在哪兒它都永遠是核心,不管面對什么模型 前向計算: 有的叫也叫正向傳播,正向計算的,有的直接把前向的方法梯度下…

祖龍娛樂 x Incredibuild

關于祖龍娛樂 祖龍娛樂有限公司(下文簡稱“祖龍娛樂”)是一家總部位于北京的移動游戲開發公司,成立于 2014 年,擁有成功的大型多人在線角色扮演游戲移動游戲組合,如《六龍爭霸》、《夢幻誅仙》和《萬王之王 3D》。公司…

微信小程序 ---- 慕尚花坊 項目初始化

目錄 項目介紹 01. 項目概述 02. 項目演示 03. 項目技術棧 04. 接口文檔 申請開發權限 項目初始化 01. 創建項目與項目初始化 02. 自定義構建 npm 集成Sass 03. 集成項目頁面文件 04. VsCode 開發小程序項目 項目介紹 01. 項目概述 [慕尚花坊] 是一款 同城鮮花訂購…

Context Capture無法量測連接點,Survey提示Read only只讀模式

Context Capture無法量測連接點,Surveys提示Read only只讀模式 出現這個問題一般是因為當前block已經完成三維重建,所以無法再編輯稀疏重建(空三)結果。只能把當前block復制一份,在復制的block上量測新的連接點。如下…

Netty中的Arena是什么以及LT和ET

Arena是什么 在Netty中,Arena是一種內存分配器(Memory Allocator)的概念。Arena的主要目的是提高內存分配和釋放的效率,減少碎片化,從而提高系統性能。 具體而言,Netyy中的Arena主要用于分配和管理ByteBuf對象的內存,ByteBuf是Ne…

分班問題 、幼兒園分班(C語言)

題目 幼兒園兩個班的小朋友排隊時混在了一起,每個小朋友都知道自己跟前面一個小朋友是不是同班,請你幫忙把同班的小朋友找出來 小朋友的編號為整數,與前面一個小朋友同班用Y表示,不同班用N表示 輸入 輸入為空格分開的小朋友編號…

PowerDesigner 安裝

PowerDesigner 安裝漢化破解使用過程 - 淪陷 - 博客園 (cnblogs.com)https://www.cnblogs.com/huangting/p/12654057.html

不要浪費

解法&#xff1a; 記錄一下tle的代碼 #include <iostream> #include <vector> #include <algorithm> using namespace std; #define endl \n bool check(vector<int>& a, int l,int k) {int sum 0;for (int i 0; i < a.size() && l…

vue3中使用 tui-image-editor進行圖片處理,并上傳

效果圖 下載包 pnpm i tui-image-editor pnpm i tui-color-picker調用組件 //html部分 <el-dialog v-model"imgshow" destroy-on-close width"40%" draggable align-center :show-close"true":close-on-click-modal"false">&l…

mescroll 在uni-app 運行的下拉刷新和上拉加載的組件

官網傳送門: https://www.mescroll.com/uni.html 最近使用到了mescroll 但是一直都是整個頁面的滾動, 最近需求有需要局部滾動, 收藏了一個博主的文章覺得寫的還挺好, 傳送門: https://blog.csdn.net/Minions_Fatman/article/details/134754926?spm1001.2014.3001.5506 使用…

基于springboot+vue的視頻網站系統(前后端分離)

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…

Stable Diffusion 模型分享:FenrisXL(芬里斯XL)

本文收錄于《AI繪畫從入門到精通》專欄,專欄總目錄:點這里。 文章目錄 模型介紹生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十

IO進程線程第6天

1.使用有名管道完成兩個進程的相互通信 send.c代碼如下&#xff1a; #include <myhead.h>int main(int argc, const char *argv[]) {pid_t pidfork();if(pid>0){//父進程//從管道1中讀取數據int fd-1;if((fdopen("./mkfifo1",O_RDONLY))-1){perror("…

【安卓基礎3】Activity(一)

&#x1f3c6;作者簡介&#xff1a;|康有為| &#xff0c;大四在讀&#xff0c;目前在小米安卓實習&#xff0c;畢業入職 &#x1f3c6;本文收錄于 安卓學習大全&#xff0c;歡迎關注 &#x1f3c6;安卓學習資料推薦&#xff1a; 視頻&#xff1a;b站搜動腦學院 視頻鏈接 &…

微信小程序開發教程:

準備工作 下載并安裝微信開發者工具注冊微信公眾平臺賬號并創建小程序項目 項目結構 app.js&#xff1a;小程序的入口文件&#xff0c;用于定義全局變量和函數app.json&#xff1a;小程序的全局配置文件&#xff0c;用于配置小程序的頁面、窗口樣式、網絡超時時間等app.wxss&am…

反光衣實時識別檢測系統-反光衣穿戴識別系統-智慧工地系統安全帽佩戴---豌豆云

反光衣實時識別檢測系統是根據視頻流的自動化圖像識別檢測&#xff0c;運用前沿的深度神經網絡與云計算技術&#xff0c;替代工作人員的眼睛。 在工地、化工廠、煤礦石化等生產安全地區部署反光衣實時識別檢測系統&#xff0c;運用現場已有的視頻監控可以無死角全自動檢測生產…