'遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛'

"

編程語言:C/C++

需要掌握的知識:1、套接字網絡編程

2、進程注入

3、HOOK API函數的基礎

注意:本章不需要用到彙編相關的知識,簡單易懂,為你寫遊戲輔助指一條路,僅用於學習,不要用於非法用途.

###【申明】

本章只是用於學習製作外掛的原理,該章提到的進程注入方式已經對該遊戲失效,可能由於本人在網上免費發佈了該輔助的原因,或者反外掛有上傳可疑文件機制,導致該注入方法失效,但是如果你可以找到注入遊戲的方法,無敵和雷掛的功能依然有效。

該外掛的研究時間:2017年12月27日

###【概要】

本章實戰講解如何編寫一個FPS網絡遊戲外掛輔助,在Ring 3注入後,操控網絡封包,達到遊戲作弊的效果,公佈該遊戲著名的“雷掛”和“無敵”(除個人競技不能使用)的功能原理。

注:這兩個功能的方法都是本人自己研究的成果,雖然雷掛橫行,但是也是本人自己研究出來的,該遊戲實現**人物無限血(無敵)**的功能,更是無人知曉。

"

編程語言:C/C++

需要掌握的知識:1、套接字網絡編程

2、進程注入

3、HOOK API函數的基礎

注意:本章不需要用到彙編相關的知識,簡單易懂,為你寫遊戲輔助指一條路,僅用於學習,不要用於非法用途.

###【申明】

本章只是用於學習製作外掛的原理,該章提到的進程注入方式已經對該遊戲失效,可能由於本人在網上免費發佈了該輔助的原因,或者反外掛有上傳可疑文件機制,導致該注入方法失效,但是如果你可以找到注入遊戲的方法,無敵和雷掛的功能依然有效。

該外掛的研究時間:2017年12月27日

###【概要】

本章實戰講解如何編寫一個FPS網絡遊戲外掛輔助,在Ring 3注入後,操控網絡封包,達到遊戲作弊的效果,公佈該遊戲著名的“雷掛”和“無敵”(除個人競技不能使用)的功能原理。

注:這兩個功能的方法都是本人自己研究的成果,雖然雷掛橫行,但是也是本人自己研究出來的,該遊戲實現**人物無限血(無敵)**的功能,更是無人知曉。

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

###【1】本次實驗的目標遊戲:SF特種部隊OL

"

編程語言:C/C++

需要掌握的知識:1、套接字網絡編程

2、進程注入

3、HOOK API函數的基礎

注意:本章不需要用到彙編相關的知識,簡單易懂,為你寫遊戲輔助指一條路,僅用於學習,不要用於非法用途.

###【申明】

本章只是用於學習製作外掛的原理,該章提到的進程注入方式已經對該遊戲失效,可能由於本人在網上免費發佈了該輔助的原因,或者反外掛有上傳可疑文件機制,導致該注入方法失效,但是如果你可以找到注入遊戲的方法,無敵和雷掛的功能依然有效。

該外掛的研究時間:2017年12月27日

###【概要】

本章實戰講解如何編寫一個FPS網絡遊戲外掛輔助,在Ring 3注入後,操控網絡封包,達到遊戲作弊的效果,公佈該遊戲著名的“雷掛”和“無敵”(除個人競技不能使用)的功能原理。

注:這兩個功能的方法都是本人自己研究的成果,雖然雷掛橫行,但是也是本人自己研究出來的,該遊戲實現**人物無限血(無敵)**的功能,更是無人知曉。

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

###【1】本次實驗的目標遊戲:SF特種部隊OL

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

這是一款FPS老遊戲了,作者上小學的時候玩的遊戲,當時還沒有聽說過CF,後來國內運營商倒閉了,現在由8090運營商代理。

###【2】遊戲的保護系統:

8090特種部隊OL用的是nProtect GameGuard驅動級保護。

nProtect GameGuard(簡稱GameGuard或GG,其驅動程序為GameMon.des)是由韓國INCA互聯網(INCA Internet)開發的遊戲反作弊的軟件。

###【3】首先談下進程注入:

難題1:首先你必須先找到可以注入遊戲進程的方法,像這種驅動級的遊戲保護,一般遠程線程注入那些常見方法是根本無法成功注入遊戲的。

難題1回答:一般情況來講,要到Ring 0 恢復被保護系統Hook 函數,但是這裡我成功得使用了編寫LSP(分層服務提供者)組件,注入進了遊戲,這是最關鍵的一步,如果連進程空間都讀寫不了,就更不用講研究各種神仙功能了。關於LSP注入,就是讓任何使用網絡的程序加載網絡庫時,會在中途加載我編寫的LSP的DLL(外掛代碼都放在裡面呢)。

關於LSP注入:http://blog.csdn.net/aaron133/article/details/78028942

這就是我注入這款遊戲的方法,由於網絡組件所有網絡進程都會加載,所以要排除進程,排除的方法有很多,例如DLL內獲取進程名,進行判斷,不是就不執行任何代碼。

"

編程語言:C/C++

需要掌握的知識:1、套接字網絡編程

2、進程注入

3、HOOK API函數的基礎

注意:本章不需要用到彙編相關的知識,簡單易懂,為你寫遊戲輔助指一條路,僅用於學習,不要用於非法用途.

###【申明】

本章只是用於學習製作外掛的原理,該章提到的進程注入方式已經對該遊戲失效,可能由於本人在網上免費發佈了該輔助的原因,或者反外掛有上傳可疑文件機制,導致該注入方法失效,但是如果你可以找到注入遊戲的方法,無敵和雷掛的功能依然有效。

該外掛的研究時間:2017年12月27日

###【概要】

本章實戰講解如何編寫一個FPS網絡遊戲外掛輔助,在Ring 3注入後,操控網絡封包,達到遊戲作弊的效果,公佈該遊戲著名的“雷掛”和“無敵”(除個人競技不能使用)的功能原理。

注:這兩個功能的方法都是本人自己研究的成果,雖然雷掛橫行,但是也是本人自己研究出來的,該遊戲實現**人物無限血(無敵)**的功能,更是無人知曉。

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

###【1】本次實驗的目標遊戲:SF特種部隊OL

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

這是一款FPS老遊戲了,作者上小學的時候玩的遊戲,當時還沒有聽說過CF,後來國內運營商倒閉了,現在由8090運營商代理。

###【2】遊戲的保護系統:

8090特種部隊OL用的是nProtect GameGuard驅動級保護。

nProtect GameGuard(簡稱GameGuard或GG,其驅動程序為GameMon.des)是由韓國INCA互聯網(INCA Internet)開發的遊戲反作弊的軟件。

###【3】首先談下進程注入:

難題1:首先你必須先找到可以注入遊戲進程的方法,像這種驅動級的遊戲保護,一般遠程線程注入那些常見方法是根本無法成功注入遊戲的。

難題1回答:一般情況來講,要到Ring 0 恢復被保護系統Hook 函數,但是這裡我成功得使用了編寫LSP(分層服務提供者)組件,注入進了遊戲,這是最關鍵的一步,如果連進程空間都讀寫不了,就更不用講研究各種神仙功能了。關於LSP注入,就是讓任何使用網絡的程序加載網絡庫時,會在中途加載我編寫的LSP的DLL(外掛代碼都放在裡面呢)。

關於LSP注入:http://blog.csdn.net/aaron133/article/details/78028942

這就是我注入這款遊戲的方法,由於網絡組件所有網絡進程都會加載,所以要排除進程,排除的方法有很多,例如DLL內獲取進程名,進行判斷,不是就不執行任何代碼。

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

#####好了,現在成功將DLL注入到了遊戲,現在的nProtect保護系統把這個DLL當成自己人看待,DLL可以在該遊戲進程中執行的任何操作(讀寫執行)。

###【4】教你如何分析封包的行為:

在上一步中,DLL成功得注入到了遊戲進程內,你就可以對該遊戲的Ring 3 API函數進行各種的Hook,改變API的執行結果或獲取數據信息達到遊戲作弊,我在對特種部隊OL的各種函數進行Hook時,nProtect驅動級保護未提示出現任何的異常情況。

由於這裡使用了LSP注入,所以我可以不用Hook 網絡函數(send、recv、sendto、recvfrom等),因為它的網絡數據必須經過我的LSP轉發達到基礎網絡組件(TCP/IP的DLL),相當於直接HOOK了以上這些函數,如果你使用其他方式注入遊戲的話,需要手動HOOK以上的函數,我覺得應該是沒有問題的,然後可以對封包的數據進行分析。

下圖是我編寫的LSP的DLL對網絡函數進行HOOK:

"

編程語言:C/C++

需要掌握的知識:1、套接字網絡編程

2、進程注入

3、HOOK API函數的基礎

注意:本章不需要用到彙編相關的知識,簡單易懂,為你寫遊戲輔助指一條路,僅用於學習,不要用於非法用途.

###【申明】

本章只是用於學習製作外掛的原理,該章提到的進程注入方式已經對該遊戲失效,可能由於本人在網上免費發佈了該輔助的原因,或者反外掛有上傳可疑文件機制,導致該注入方法失效,但是如果你可以找到注入遊戲的方法,無敵和雷掛的功能依然有效。

該外掛的研究時間:2017年12月27日

###【概要】

本章實戰講解如何編寫一個FPS網絡遊戲外掛輔助,在Ring 3注入後,操控網絡封包,達到遊戲作弊的效果,公佈該遊戲著名的“雷掛”和“無敵”(除個人競技不能使用)的功能原理。

注:這兩個功能的方法都是本人自己研究的成果,雖然雷掛橫行,但是也是本人自己研究出來的,該遊戲實現**人物無限血(無敵)**的功能,更是無人知曉。

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

###【1】本次實驗的目標遊戲:SF特種部隊OL

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

這是一款FPS老遊戲了,作者上小學的時候玩的遊戲,當時還沒有聽說過CF,後來國內運營商倒閉了,現在由8090運營商代理。

###【2】遊戲的保護系統:

8090特種部隊OL用的是nProtect GameGuard驅動級保護。

nProtect GameGuard(簡稱GameGuard或GG,其驅動程序為GameMon.des)是由韓國INCA互聯網(INCA Internet)開發的遊戲反作弊的軟件。

###【3】首先談下進程注入:

難題1:首先你必須先找到可以注入遊戲進程的方法,像這種驅動級的遊戲保護,一般遠程線程注入那些常見方法是根本無法成功注入遊戲的。

難題1回答:一般情況來講,要到Ring 0 恢復被保護系統Hook 函數,但是這裡我成功得使用了編寫LSP(分層服務提供者)組件,注入進了遊戲,這是最關鍵的一步,如果連進程空間都讀寫不了,就更不用講研究各種神仙功能了。關於LSP注入,就是讓任何使用網絡的程序加載網絡庫時,會在中途加載我編寫的LSP的DLL(外掛代碼都放在裡面呢)。

關於LSP注入:http://blog.csdn.net/aaron133/article/details/78028942

這就是我注入這款遊戲的方法,由於網絡組件所有網絡進程都會加載,所以要排除進程,排除的方法有很多,例如DLL內獲取進程名,進行判斷,不是就不執行任何代碼。

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

#####好了,現在成功將DLL注入到了遊戲,現在的nProtect保護系統把這個DLL當成自己人看待,DLL可以在該遊戲進程中執行的任何操作(讀寫執行)。

###【4】教你如何分析封包的行為:

在上一步中,DLL成功得注入到了遊戲進程內,你就可以對該遊戲的Ring 3 API函數進行各種的Hook,改變API的執行結果或獲取數據信息達到遊戲作弊,我在對特種部隊OL的各種函數進行Hook時,nProtect驅動級保護未提示出現任何的異常情況。

由於這裡使用了LSP注入,所以我可以不用Hook 網絡函數(send、recv、sendto、recvfrom等),因為它的網絡數據必須經過我的LSP轉發達到基礎網絡組件(TCP/IP的DLL),相當於直接HOOK了以上這些函數,如果你使用其他方式注入遊戲的話,需要手動HOOK以上的函數,我覺得應該是沒有問題的,然後可以對封包的數據進行分析。

下圖是我編寫的LSP的DLL對網絡函數進行HOOK:

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

####分析send函數和sendto函數:

一般來說,簡單的操作都是明文,來回切換狀態就可以知道當發出該封包時,所作出的動作,重要的數據一般使用加密算法,並且不能被修改,一修改就會導致掉線,因為他封包的一部分是整個封包數據的校驗碼,錯了一個位都是壞包,一般這種封包也有唯一性,不能重發的。

對付明文封包:來回切換狀態,看一看哪個字節代表著什麼動作,進而修改。

對付加密封包:Sleep延遲發包,或假裝已經發出去了(讓API函數不發實際數據,正常返回0,並將實際發送長度改成需要發送的大小),相當於遊戲以為封包正常發出去了,但是其實數據沒有到服務器,這兩個方法可以做到相當變態的功能了,就看遊戲有沒有能力去處理這種問題。

我這裡說的方法不一定每一個遊戲都有效,具體情況,要你自己去測試、研究,因為程序本身就是一條流水線,某一小東西被打亂,都可能會影響到之後的處理。

###【5】關於SF特種部隊OL的“雷掛”與“無敵”功能:

####一、雷掛的實現:

說明:SF特種部隊OL所說的雷掛,就是卡人物的輔助,開局按F1可以卡人物不動(實際上人家是動的),自己的角色相當於隱身一樣,過去殺完人,F2釋放人物後,剛才的傷害會被全部打出去,導致的結果就是本章開頭的那張效果圖一樣,全部被殺死。

雷掛的名稱是因為外掛使用者經常開局就卡人物,然後使用手雷團滅對方,所以被稱為雷掛。

分析:一說到網絡遊戲的卡人物很容易就可以想到它的原理,因為很多人玩遊戲都經歷過網絡太卡,玩個雞兒的問題,如果我們故意讓某一個發包線程睡眠(Sleep),又不影響到控制畫面的主線程,這就有實現雷掛的機會,特種部隊OL就有這種機會

實現原理:經研究發現,讓執行sendto函數的線程睡眠,並在手動讓他醒來時,只要放慢速度發包(原因是封包積累過多,服務器接收不過來,導致只能殺死1、2個人),可以實現雷掛的功能。

實際代碼相當簡單,只需要以下代碼:

"

編程語言:C/C++

需要掌握的知識:1、套接字網絡編程

2、進程注入

3、HOOK API函數的基礎

注意:本章不需要用到彙編相關的知識,簡單易懂,為你寫遊戲輔助指一條路,僅用於學習,不要用於非法用途.

###【申明】

本章只是用於學習製作外掛的原理,該章提到的進程注入方式已經對該遊戲失效,可能由於本人在網上免費發佈了該輔助的原因,或者反外掛有上傳可疑文件機制,導致該注入方法失效,但是如果你可以找到注入遊戲的方法,無敵和雷掛的功能依然有效。

該外掛的研究時間:2017年12月27日

###【概要】

本章實戰講解如何編寫一個FPS網絡遊戲外掛輔助,在Ring 3注入後,操控網絡封包,達到遊戲作弊的效果,公佈該遊戲著名的“雷掛”和“無敵”(除個人競技不能使用)的功能原理。

注:這兩個功能的方法都是本人自己研究的成果,雖然雷掛橫行,但是也是本人自己研究出來的,該遊戲實現**人物無限血(無敵)**的功能,更是無人知曉。

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

###【1】本次實驗的目標遊戲:SF特種部隊OL

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

這是一款FPS老遊戲了,作者上小學的時候玩的遊戲,當時還沒有聽說過CF,後來國內運營商倒閉了,現在由8090運營商代理。

###【2】遊戲的保護系統:

8090特種部隊OL用的是nProtect GameGuard驅動級保護。

nProtect GameGuard(簡稱GameGuard或GG,其驅動程序為GameMon.des)是由韓國INCA互聯網(INCA Internet)開發的遊戲反作弊的軟件。

###【3】首先談下進程注入:

難題1:首先你必須先找到可以注入遊戲進程的方法,像這種驅動級的遊戲保護,一般遠程線程注入那些常見方法是根本無法成功注入遊戲的。

難題1回答:一般情況來講,要到Ring 0 恢復被保護系統Hook 函數,但是這裡我成功得使用了編寫LSP(分層服務提供者)組件,注入進了遊戲,這是最關鍵的一步,如果連進程空間都讀寫不了,就更不用講研究各種神仙功能了。關於LSP注入,就是讓任何使用網絡的程序加載網絡庫時,會在中途加載我編寫的LSP的DLL(外掛代碼都放在裡面呢)。

關於LSP注入:http://blog.csdn.net/aaron133/article/details/78028942

這就是我注入這款遊戲的方法,由於網絡組件所有網絡進程都會加載,所以要排除進程,排除的方法有很多,例如DLL內獲取進程名,進行判斷,不是就不執行任何代碼。

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

#####好了,現在成功將DLL注入到了遊戲,現在的nProtect保護系統把這個DLL當成自己人看待,DLL可以在該遊戲進程中執行的任何操作(讀寫執行)。

###【4】教你如何分析封包的行為:

在上一步中,DLL成功得注入到了遊戲進程內,你就可以對該遊戲的Ring 3 API函數進行各種的Hook,改變API的執行結果或獲取數據信息達到遊戲作弊,我在對特種部隊OL的各種函數進行Hook時,nProtect驅動級保護未提示出現任何的異常情況。

由於這裡使用了LSP注入,所以我可以不用Hook 網絡函數(send、recv、sendto、recvfrom等),因為它的網絡數據必須經過我的LSP轉發達到基礎網絡組件(TCP/IP的DLL),相當於直接HOOK了以上這些函數,如果你使用其他方式注入遊戲的話,需要手動HOOK以上的函數,我覺得應該是沒有問題的,然後可以對封包的數據進行分析。

下圖是我編寫的LSP的DLL對網絡函數進行HOOK:

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

####分析send函數和sendto函數:

一般來說,簡單的操作都是明文,來回切換狀態就可以知道當發出該封包時,所作出的動作,重要的數據一般使用加密算法,並且不能被修改,一修改就會導致掉線,因為他封包的一部分是整個封包數據的校驗碼,錯了一個位都是壞包,一般這種封包也有唯一性,不能重發的。

對付明文封包:來回切換狀態,看一看哪個字節代表著什麼動作,進而修改。

對付加密封包:Sleep延遲發包,或假裝已經發出去了(讓API函數不發實際數據,正常返回0,並將實際發送長度改成需要發送的大小),相當於遊戲以為封包正常發出去了,但是其實數據沒有到服務器,這兩個方法可以做到相當變態的功能了,就看遊戲有沒有能力去處理這種問題。

我這裡說的方法不一定每一個遊戲都有效,具體情況,要你自己去測試、研究,因為程序本身就是一條流水線,某一小東西被打亂,都可能會影響到之後的處理。

###【5】關於SF特種部隊OL的“雷掛”與“無敵”功能:

####一、雷掛的實現:

說明:SF特種部隊OL所說的雷掛,就是卡人物的輔助,開局按F1可以卡人物不動(實際上人家是動的),自己的角色相當於隱身一樣,過去殺完人,F2釋放人物後,剛才的傷害會被全部打出去,導致的結果就是本章開頭的那張效果圖一樣,全部被殺死。

雷掛的名稱是因為外掛使用者經常開局就卡人物,然後使用手雷團滅對方,所以被稱為雷掛。

分析:一說到網絡遊戲的卡人物很容易就可以想到它的原理,因為很多人玩遊戲都經歷過網絡太卡,玩個雞兒的問題,如果我們故意讓某一個發包線程睡眠(Sleep),又不影響到控制畫面的主線程,這就有實現雷掛的機會,特種部隊OL就有這種機會

實現原理:經研究發現,讓執行sendto函數的線程睡眠,並在手動讓他醒來時,只要放慢速度發包(原因是封包積累過多,服務器接收不過來,導致只能殺死1、2個人),可以實現雷掛的功能。

實際代碼相當簡單,只需要以下代碼:

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

上述代碼,由於是LSP的HOOK,手動HOOK的話,只需要使用像Sleep、事件對象這種可以控制線程睡眠或醒來的方法,都可以實現。

//由於LSP注入面對系統全部網絡進程,表示過濾掉不是特種部隊OL的進程,讓其他網絡進程執行正常的封包操作。

if (!sf)
return g_NextProcTable.lpWSPSendTo(s, lpBuffers, dwBufferCount, lpNumberOfBytesSent, dwFlags,
lpTo, iTolen, lpOverlapped, lpCompletionRoutine, lpThreadId, lpErrno);
//用於進程間控制線程睡眠、醒來的事件對象
if (Event)
WaitForSingleObject(Event, INFINITE);
//當恢復時,線程跑起來後,放慢速度發包,因為封包隊列太多,服務器接收不過來的。
Sleep(300);
//讓基礎服務提供者(TCP/IP)執行發包操作,也就是調用sendto API函數。
return g_NextProcTable.lpWSPSendTo(s, lpBuffers, dwBufferCount, lpNumberOfBytesSent, dwFlags,
lpTo, iTolen, lpOverlapped, lpCompletionRoutine, lpThreadId, lpErrno);

####二、無敵(無限血,個人競技不能使用)的實現:

說明:這是我編寫網絡封包調試工具後,再實驗過程中,發現的可以實現無限血的方法,在這裡講一下實現的方法。

實現方法:每局的開局時,立即讓send的包都假裝已經發出去了(不發包,偽造為已發送出去),然後過1、2秒,恢復正常,這時候,就無敵了,誰都打不死你,而你可以打死別人。

####要說的就那麼多,主要的還是去實踐,注入是最關鍵得一步。

PS:小編目前有一套完整遊戲輔助製作教程,獲取該教程請私信:遊戲輔助

"

編程語言:C/C++

需要掌握的知識:1、套接字網絡編程

2、進程注入

3、HOOK API函數的基礎

注意:本章不需要用到彙編相關的知識,簡單易懂,為你寫遊戲輔助指一條路,僅用於學習,不要用於非法用途.

###【申明】

本章只是用於學習製作外掛的原理,該章提到的進程注入方式已經對該遊戲失效,可能由於本人在網上免費發佈了該輔助的原因,或者反外掛有上傳可疑文件機制,導致該注入方法失效,但是如果你可以找到注入遊戲的方法,無敵和雷掛的功能依然有效。

該外掛的研究時間:2017年12月27日

###【概要】

本章實戰講解如何編寫一個FPS網絡遊戲外掛輔助,在Ring 3注入後,操控網絡封包,達到遊戲作弊的效果,公佈該遊戲著名的“雷掛”和“無敵”(除個人競技不能使用)的功能原理。

注:這兩個功能的方法都是本人自己研究的成果,雖然雷掛橫行,但是也是本人自己研究出來的,該遊戲實現**人物無限血(無敵)**的功能,更是無人知曉。

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

###【1】本次實驗的目標遊戲:SF特種部隊OL

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

這是一款FPS老遊戲了,作者上小學的時候玩的遊戲,當時還沒有聽說過CF,後來國內運營商倒閉了,現在由8090運營商代理。

###【2】遊戲的保護系統:

8090特種部隊OL用的是nProtect GameGuard驅動級保護。

nProtect GameGuard(簡稱GameGuard或GG,其驅動程序為GameMon.des)是由韓國INCA互聯網(INCA Internet)開發的遊戲反作弊的軟件。

###【3】首先談下進程注入:

難題1:首先你必須先找到可以注入遊戲進程的方法,像這種驅動級的遊戲保護,一般遠程線程注入那些常見方法是根本無法成功注入遊戲的。

難題1回答:一般情況來講,要到Ring 0 恢復被保護系統Hook 函數,但是這裡我成功得使用了編寫LSP(分層服務提供者)組件,注入進了遊戲,這是最關鍵的一步,如果連進程空間都讀寫不了,就更不用講研究各種神仙功能了。關於LSP注入,就是讓任何使用網絡的程序加載網絡庫時,會在中途加載我編寫的LSP的DLL(外掛代碼都放在裡面呢)。

關於LSP注入:http://blog.csdn.net/aaron133/article/details/78028942

這就是我注入這款遊戲的方法,由於網絡組件所有網絡進程都會加載,所以要排除進程,排除的方法有很多,例如DLL內獲取進程名,進行判斷,不是就不執行任何代碼。

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

#####好了,現在成功將DLL注入到了遊戲,現在的nProtect保護系統把這個DLL當成自己人看待,DLL可以在該遊戲進程中執行的任何操作(讀寫執行)。

###【4】教你如何分析封包的行為:

在上一步中,DLL成功得注入到了遊戲進程內,你就可以對該遊戲的Ring 3 API函數進行各種的Hook,改變API的執行結果或獲取數據信息達到遊戲作弊,我在對特種部隊OL的各種函數進行Hook時,nProtect驅動級保護未提示出現任何的異常情況。

由於這裡使用了LSP注入,所以我可以不用Hook 網絡函數(send、recv、sendto、recvfrom等),因為它的網絡數據必須經過我的LSP轉發達到基礎網絡組件(TCP/IP的DLL),相當於直接HOOK了以上這些函數,如果你使用其他方式注入遊戲的話,需要手動HOOK以上的函數,我覺得應該是沒有問題的,然後可以對封包的數據進行分析。

下圖是我編寫的LSP的DLL對網絡函數進行HOOK:

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

####分析send函數和sendto函數:

一般來說,簡單的操作都是明文,來回切換狀態就可以知道當發出該封包時,所作出的動作,重要的數據一般使用加密算法,並且不能被修改,一修改就會導致掉線,因為他封包的一部分是整個封包數據的校驗碼,錯了一個位都是壞包,一般這種封包也有唯一性,不能重發的。

對付明文封包:來回切換狀態,看一看哪個字節代表著什麼動作,進而修改。

對付加密封包:Sleep延遲發包,或假裝已經發出去了(讓API函數不發實際數據,正常返回0,並將實際發送長度改成需要發送的大小),相當於遊戲以為封包正常發出去了,但是其實數據沒有到服務器,這兩個方法可以做到相當變態的功能了,就看遊戲有沒有能力去處理這種問題。

我這裡說的方法不一定每一個遊戲都有效,具體情況,要你自己去測試、研究,因為程序本身就是一條流水線,某一小東西被打亂,都可能會影響到之後的處理。

###【5】關於SF特種部隊OL的“雷掛”與“無敵”功能:

####一、雷掛的實現:

說明:SF特種部隊OL所說的雷掛,就是卡人物的輔助,開局按F1可以卡人物不動(實際上人家是動的),自己的角色相當於隱身一樣,過去殺完人,F2釋放人物後,剛才的傷害會被全部打出去,導致的結果就是本章開頭的那張效果圖一樣,全部被殺死。

雷掛的名稱是因為外掛使用者經常開局就卡人物,然後使用手雷團滅對方,所以被稱為雷掛。

分析:一說到網絡遊戲的卡人物很容易就可以想到它的原理,因為很多人玩遊戲都經歷過網絡太卡,玩個雞兒的問題,如果我們故意讓某一個發包線程睡眠(Sleep),又不影響到控制畫面的主線程,這就有實現雷掛的機會,特種部隊OL就有這種機會

實現原理:經研究發現,讓執行sendto函數的線程睡眠,並在手動讓他醒來時,只要放慢速度發包(原因是封包積累過多,服務器接收不過來,導致只能殺死1、2個人),可以實現雷掛的功能。

實際代碼相當簡單,只需要以下代碼:

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

上述代碼,由於是LSP的HOOK,手動HOOK的話,只需要使用像Sleep、事件對象這種可以控制線程睡眠或醒來的方法,都可以實現。

//由於LSP注入面對系統全部網絡進程,表示過濾掉不是特種部隊OL的進程,讓其他網絡進程執行正常的封包操作。

if (!sf)
return g_NextProcTable.lpWSPSendTo(s, lpBuffers, dwBufferCount, lpNumberOfBytesSent, dwFlags,
lpTo, iTolen, lpOverlapped, lpCompletionRoutine, lpThreadId, lpErrno);
//用於進程間控制線程睡眠、醒來的事件對象
if (Event)
WaitForSingleObject(Event, INFINITE);
//當恢復時,線程跑起來後,放慢速度發包,因為封包隊列太多,服務器接收不過來的。
Sleep(300);
//讓基礎服務提供者(TCP/IP)執行發包操作,也就是調用sendto API函數。
return g_NextProcTable.lpWSPSendTo(s, lpBuffers, dwBufferCount, lpNumberOfBytesSent, dwFlags,
lpTo, iTolen, lpOverlapped, lpCompletionRoutine, lpThreadId, lpErrno);

####二、無敵(無限血,個人競技不能使用)的實現:

說明:這是我編寫網絡封包調試工具後,再實驗過程中,發現的可以實現無限血的方法,在這裡講一下實現的方法。

實現方法:每局的開局時,立即讓send的包都假裝已經發出去了(不發包,偽造為已發送出去),然後過1、2秒,恢復正常,這時候,就無敵了,誰都打不死你,而你可以打死別人。

####要說的就那麼多,主要的還是去實踐,注入是最關鍵得一步。

PS:小編目前有一套完整遊戲輔助製作教程,獲取該教程請私信:遊戲輔助

遊戲輔助:實戰並講解如何編寫一個FPS網絡遊戲外掛

————————————————

版權聲明:本文為CSDN博主「Aaron133」的原創文章

原文鏈接:https://blog.csdn.net/Aaron133/article/details/79269495

"

相關推薦

推薦中...