給網遊寫一個掛吧(一) – 反反外掛驅動的驅動

來源:互聯網
上載者:User

去年做了一些研究,研究做外掛的一些相關技術,打算放出來跟大家分享,分享一下我們做掛的一些思路,掛的原理,希望拋磚引玉。

 

外掛說白了就是用程式代替人去操縱遊戲,類比人向遊戲程式發送鍵盤、滑鼠訊息。一般的流程就是:

1、 通過Windows系統的OpenProcess API開啟目標進程 – 也就是遊戲,以便能讀寫目標記憶體的資料,甚至是調用目標進程的函數,比如某些世界級的遊戲裡的Lua函數,或者遊戲本身的C/C++函數。

2、 通過ReadVirtualMemory和WriteVirtualMemory來 讀取和修改一些關鍵資訊,比如說人物的生命值,人物的座標,遊戲裡地圖上各個元素等等。

3、 接著

a)         要麼就是調用遊戲裡的一些函數,繞過遊戲用戶端的一些約束,調用角色裡的一些非常強大的功能,從而快速殺怪。但這種方法的缺點很明顯,伺服器會做很多的檢查判定你是掛從而封殺你。

b)         要麼就是直接向遊戲進程發送鍵盤、滑鼠等訊息,通過判定地圖上的障礙物、怪物之類的東西過地圖,當然殺怪也是通過類比按鍵來完成。

 

然而隨著外掛對遊戲的破壞性影響,反外掛和外掛的反反外掛技術都已經在核心層纏鬥了,比如:

1、 為了防止外掛調用Windows系統的一系列關鍵API(例如OpenProcess、Read/WriteVirtualMemory等),網遊程式一般都會在遊戲啟動時在Windows作業系統上載入一個驅動程式,這個驅動程式的目的就是修改一系列關鍵API的代碼,有時也會將遊戲進程在系統中隱藏掉,從而使使用者態的外掛和調試器無法訪問遊戲進程。

2、 為了防止外掛製作者通過核心調試技術來分析遊戲對系統關鍵API的代碼修改,反外掛驅動啟動後一般都會禁用核心調試(反調試技術、反調試技術二)。

3、 另外遊戲程式也會屏蔽Windows系統用來向遊戲進程發送鍵盤、滑鼠等訊息的函數。

4、 為了防止遊戲裡的關鍵資料被輕易修改,一般生命值這些東西遊戲程式都會將其加密,使用一個加密函數去讀寫。

5、 另外為了防止外掛殺怪太強從而影響遊戲的平衡,一般來說從遊戲伺服器端,一張地圖裡的怪物座標、類型等資料,是一點點傳到用戶端的。

6、 還有很多……(我自己經驗也不夠,一時半會也枚舉不完)。

 

那麼做外掛的第一步,就是破解這個反外掛驅動,否則不僅沒辦法操控遊戲進程,也沒有辦法使用調試器逆向分析遊戲裡的一些關鍵資料,於是通常的做法是:

1、 首先破解反外掛驅動的禁用核心調試的手段,一般都是通過Windbg和虛擬機器用核心調試技術來完成的。

2、 然後找出反外掛驅動對系統API的更改。

3、 然後再寫一個驅動程式,繞過反外掛驅動對系統API的更改。

 

但上面的方法有點累,因為破解禁用核心調試的手段就需要進行一些逆向了,而且還要對反外掛驅動逆向,比較麻煩。但是它並沒有禁用本地核心調試功能和記憶體檔案產生的功能,因此我們可以使用這種方式調試和開發驅動,簡便程度比雙機核心調試差一點點。

1、 使用本地核心調試:

windbg -kl

2、 產生記憶體(dump)檔案:

修改\HKLM\SYSTEM\CurrentControlSet\Control\CrashControl裡的:

AutoReboot

CrashDumpEnabled

         1 – 代表完全儲存實體記憶體內容

         2 – ?

         3 – minidump

 

如果修改為1,BSOD(藍屏)之後,完全記憶體儲存在%windir%\memory.dmp

如果修改為3,BSOD(藍屏)之後,minidump儲存在%windir%\minidump\檔案夾下面。

 

還有一個比較簡單的方法,就是你在自己的破解驅動裡,故意往SSDT寫一些垃圾資料,然後導致系統BSOD(藍屏),重啟機器後用windbg開啟dump開啟memory.dmp檔案,執行!analyze –v命令會自動給你顯示所有被hook的函數和hook的地址、代碼等等資訊,這樣可以直接做完第1和第2步。

 

最後剩下的編碼就比較簡單了,具體的代碼請參看以前的部落格:破解XXX遊戲驅動保護過程總結、另外有個朋友的破解過程寫的很詳細,也建議大家看看:過 DNF TP驅動保護(一)。

 

最後如果大家對調試技術感興趣的話,可以考慮購買我的新書: 應用程式調試技術,這套視頻除了講解調試的技巧外,還盡量完整地講解了周邊用到的技術,這是因為調試技術要好的話,需要基礎功和背景知識紮實才行。

 

 謝謝大家,未完待續……

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.