查看完整版本: 外掛編寫教程
頁: [1] 2 3 4 5 6 7 8 9 10

sami012985 發表於 2010-2-19 06:26 AM

外掛編寫教程

本帖最後由 sami012985 於 2010-2-19 06:28 AM 編輯

做自己喜歡的!------ 明天你來自己做外掛 隨著網絡遊戲的日益火爆,很多玩家都投身到遊戲中。目前很多玩家都依賴於一些遊戲的外掛程序來進行遊戲。那麼做一個遊戲的外掛程序是否是一件很困難的事呢?回答是"否",誠然編寫一些程序是需要一些基本知識的,所以我們想以最簡單的語言來給你講授編寫外掛程序的一些技巧,一些方法,並提供給你一些基本的輔助工具,即使你是一個菜鳥,看了我們的教程,並技巧地使用我們提供給你的工具,你完全能夠編寫出一個完全屬於你自己的外掛。在本教程內,我們提供了金庸群俠傳,以及網絡三國這兩個遊戲的修改實際例子,因為這兩款遊戲都是對封包進行過加密運算的,如果你對這兩個遊戲的修改有了一定的瞭解後,相信你在其他遊戲中也能非常好地做出屬於自己的外掛。 我們提供了金庸打增援20個NPC和網絡三國在PK中自動吃藥,自動發鏢這兩個實際的例子,讓你上手更容易。我們也會本教程內附上這兩個軟件以提供給你使 用和學習。我們會在教程內講授給你怎麼去破解封包的加密算法,怎麼利用我們提供給你工具來偽造和發送封包。本教程除了文字教程外,我們還會提供金庸群俠和 三國的外掛程序,另外還提供6個外掛製作工具,以供你使用。希望在以後的遊戲中,每一個玩家都能夠在遊戲中成長起來,不但遊戲玩的出色,修改遊戲也同樣出色,做一個真正的遊戲DIY。 要想在修改遊戲中做到百戰百勝,是需要相當豐富的計算機知識的。有很多計算機高手就是從玩遊戲,修改遊戲中,逐步對計算機產生濃厚的興趣,逐步成長起來的。不要在羨慕別人能夠做到的,因為別人能夠做的你也能夠!我相信你們看了本教程後,會對遊戲有一個全新的認識,呵呵,因為我是個好老師!(別拿雞蛋砸我呀,救命啊!#¥%……*)   不過要想從修改遊戲中學到知識,增加自己的計算機水平,可不能只是靠修改遊戲呀! 要知道,修改遊戲只是一個驗證你對你所瞭解的某些計算機知識的理解程度的場所,只能給你一些發現問題、解決問題的機會,只能起到幫助你提高學習計算機的興趣的作用,而決不是學習計算機的捷徑。
-------------------------------------------------------------------------------- 一:什麼叫外掛? 現在的網絡遊戲多是基於Internet上客戶卅服務器模式,服務端程序運行在遊戲服務器上,遊戲的設計者在其中創造一個龐大的遊戲空間,各地的玩家可以通過運行客戶端程序同時登錄到遊戲中。簡單地說,網絡遊戲實際上就是由遊戲開發商提供一個遊戲環境,而玩家們就是在這個環境中相對自由和開放地進行遊戲操作。那麼既然在網絡遊戲中有了服務器這個概念,我們以前傳統的修改遊戲方法就顯得無能為力了。記得我們在單機版的遊戲中,隨心所欲地通過內存搜索來修改角色的各種屬性,這在網絡遊戲中就沒有任何用處了。因為我們在網絡遊戲中所扮演角色的各種屬性及各種重要資料都存放在服務器上,在我們自己機器上(客戶端)只是顯示角色的狀態,所以通過修改客戶端內存裡有關角色的各種屬性是不切實際的。那麼是否我們就沒有辦法在網絡遊戲中達到我們修改的目的?回答是"否"。我們知道Internet客戶卅服務器模式的通訊一般採用TCP/IP通信協議,數據交換是通過IP數據包的傳輸來實現的,一般來說我們客戶端向服務器發出某些請求,比如移動、戰鬥等指令都是通過封包的形式和服務器交換數據。那麼我們把本地發出消息稱為SEND,意思就是發送數據,服務器收到我們SEND的消息後,會按照既定的程序把有關的信息反饋給客戶端,比如,移動的坐標,戰鬥的類型。那麼我們把客戶端收到服務器發來的有關消息稱為RECV。知道了這個道理,接下來我們要做的工作就是分析客戶端和服務器之間往來的數據(也就是封包),這樣我們就可以提取到對我們有用的數據進行修改,然後模擬服務器發給客戶端,或者模擬客戶端發送給服務器,這樣就可以實現我們修改遊戲的目的了。 目前除了修改遊戲封包來實現修改遊戲的目的,我們也可以修改客戶端的有關程序來達到我們的要求。我們知道目前各個服務器的運算能力是有限的,特別在遊戲中,遊戲服務器要計算遊戲中所有玩家的狀況幾乎是不可能的,所以有一些運算還是要依靠我們客戶端來完成,這樣又給了我們修改遊戲提供了一些便利。比如我們可以通過將客戶端程序脫殼來發現一些程序的判斷分支,通過跟蹤調試我們可以把一些對我們不利的判斷去掉,以此來滿足我們修改遊戲的需求。 在下幾個章節中,我們將給大家講述封包的概念,和修改跟蹤客戶端的有關知識。大家準備好了嗎?
遊戲數據格式和存儲:
在進行我們的工作之前,我們需要掌握一些關於計算機中儲存數據方式的知識和遊戲中儲存數據的特點。本章節是提供給菜鳥級的玩家看的,如果你是高手就可以跳過了,呵呵!  如果,你想成為無堅不摧的劍客,那麼,這些東西就會花掉你一些時間;如果,你只想作個江湖的遊客的話,那麼這些東西,瞭解與否無關緊要。是作劍客,還是作遊客,你選擇吧!
現在我們開始!首先,你要知道遊戲中 儲存數據的幾種格式,這幾種格式是:字節(BYTE)、字(WORD)和雙字(DOUBLE WORD),或者說是8位、16位和32位儲存方式。字節也就是8位方式能儲存0~255的數字;字或說是16位儲存方式能儲存0~65535的數;雙字 即32位方式能儲存0~4294967295的數。
為何要瞭解這些知識呢?在遊戲中各種參數的最大值是不同的,有些可能100左右就夠了,比如,金庸群俠傳中的角色的等級、隨機遇敵個數等等。而有些卻需要大於255甚至大於65535,像金庸群俠傳中角色的金錢值可達到數百萬。所以,在遊戲中各種不同的數據的類型是不一樣的。在我們修改遊戲時需要尋找準備修改的數據的封包,在這種時候,正確判斷數據的類型是迅速找到正確地址的重要條件。
  在計算機中數據以字節為基本的儲存單位,每個字節被賦予一個編號,以確定各自的位置。這個編號我們就稱為地址。
在 需要用到字或雙字時,計算機用連續的兩個字節來組成一個字,連續的兩個字組成一個雙字。而一個字或雙字的地址就是它們的低位字節的地址。 現在我們常用的Windows 9x操作系統中,地址是用一個32位的二進制數表示的。而在平時我們用到內存地址時,總是用一個8位的16進制數來表示它。
二進制和十六進制又是怎樣一回事呢?
   簡單說來,二進制數就是一種只有0和1兩個數碼,每滿2則進一位的計數進位法。同樣,16進制就是每滿十六就進一位的計數進位法。16進制有0--F十 六個數字,它為表示十到十五的數字採用了A、B、C、D、E、F六個數字,它們和十進制的對應關係是:A對應於10,B對應於11,C對應於12,D對應 於13,E對應於14,F對應於15。而且,16進制數和二進制數間有一個簡單的對應關係,那就是;四位二進制數相當於一位16進制數。比如,一個四位的 二進制數1111就相當於16進制的F,1010就相當於A。
瞭解這些基礎知識對修改遊戲有著很大的幫助,下面我就要談到這個問題。由於在計算機中數據是以二進制的方式儲存的,同時16進制數和二進制間的轉換關係十分簡單,所以大部分的修改工具在顯示計算機中的數據時會顯示16進制的代碼,而且在你修改時也需要輸入16進制的數字。你清楚了吧?
  在遊戲中看到的數據可都是十進制的,在要尋找並修改參數的值時,可以使用Windows提供的計算器來進行十進制和16進制的換算,我們可以在開始菜單裡的程序組中的附件中找到它。
  現在要瞭解的知識也差不多了!不過,有個問題在遊戲修改中是需要注意的。在計算機中數據的儲存方式一般是低位數儲存在低位字節,高位數儲存在高位字節。比如,十進制數41715轉換為16進制的數為A2F3,但在計算機中這個數被存為F3A2。
看了以上內容大家對數據的存貯和數據的對應關係都瞭解了嗎? 好了,接下來我們要告訴大家在遊戲中,封包到底是怎麼一回事了,來!大家把袖口捲起來,讓我們來幹活吧!

-------------------------------------------------------------------------------- 二:什麼是封包?怎麼截獲一個遊戲的封包?怎麼去檢查遊戲服務器的ip 地址和端口號? Internet用戶使用的各種信息服務,其通訊的信息最終均可以歸結為以IP包為單位的信息傳送,IP包除了包括要傳送的數據信息外,還包含有信息要發 送到的目的IP地址、信息發送的源IP地址、以及一些相關的控制信息。當一台路由器收到一個IP數據包時,它將根據數據包中的目的IP地址項查找路由表, 根據查找的結果將此IP數據包送往對應端口。下一台IP路由器收到此數據包後繼續轉發,直至發到目的地。路由器之間可以通過路由協議來進行路由信息的交 換,從而更新路由表。
那麼我們所關心的內容只是IP包中的數據信息,我們可以使用許多監聽網絡的工具來截獲客戶端與服務器之間的交換數據,下面就向你介紹其中的一種工具:WPE。
WPE使用方法:執行WPE會有下列幾項功能可選擇:
SELECT GAME選擇目前在記憶體中您想攔截的程式,您只需雙擊該程式名稱即可。
TRACE 追蹤功能。用來追蹤擷取程式送收的封包。WPE必須先完成點選欲追蹤的程式名稱,才可以使用此項目。 按下Play鍵開始擷取程式收送的封包。您可以隨時按下 | | 暫停追蹤,想繼續時請再按下 | | 。按下正方形可以停止擷取封包並且顯示所有已擷取封包內容。若您沒按下正方形停止鍵,追蹤的動作將依照OPTION裡的設定值自動停止。如果您沒有擷取到 資料,試試將OPTION裡調整為Winsock Version 2。WPE 及 Trainers 是設定在顯示至少16 bits 顏色下才可執行。
FILTER過濾功能。用來分析所擷取到的封包,並且予以修改。
SEND PACKET送出封包功能。能夠讓您送出假造的封包。
TRAINER MAKER製作修改器。
OPTIONS設定功能。讓您調整WPE的一些設定值。
FILTER的詳細教學
- 當FILTER在啟動狀態時 ,ON的按鈕會呈現紅色。- 當您啟動FILTER時,您隨時可以關閉這個視窗。FILTER將會保留在原來的狀態,直到您再按一次 on / off 鈕。- 只有FILTER啟用鈕在OFF的狀態下,才可以勾選Filter前的方框來編輯修改。- 當您想編輯某個Filter,只要雙擊該Filter的名字即可。
NORMAL MODE:
範例:
當您在 Street Fighter Online ﹝快打旋風線上版﹞遊戲中, 您使用了兩次火球而且擊中了對方,這時您會擷取到以下的封包:SEND->...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

s2044025 發表於 2010-2-19 12:38 PM

謝謝大大分享~~~

不過看大這長篇大論就懶了~~

sami012985 發表於 2010-2-19 11:44 PM

回復s2044025
慢慢看吧

gozillaa 發表於 2010-2-20 04:38 AM

好長的一篇教學文章
要花點時間去研讀

ozero 發表於 2010-2-21 02:34 AM

謝謝這麼詳細的教學, 學到不少知識. 但應用看來要花點時間, 看似不易掌握.<br><br><br><br><br><div></div>

sami012985 發表於 2010-2-21 04:25 AM

回復 4# gozillaa


是阿
我個人也認為這篇 太長了
給初學看的
解釋比較多

sami012985 發表於 2010-2-21 04:27 AM

回復 5# ozero


   沒錯
雖然長
但聽網友說失敗率好像有點高

sami012985 發表於 2010-2-21 04:29 AM

回復 2# s2044025

果然還是太長了
畢竟解釋太多了

sami012985 發表於 2010-2-21 04:29 AM

回復 3# sami012985


    ...

hcu.chu 發表於 2010-2-21 10:10 AM

謝謝大大分享~~~

不過看大這長篇大論就懶了~~

謝<br><br><br><br><br><div></div>

sami012985 發表於 2010-2-21 11:48 PM

回復 10# hcu.chu


    摁   慢慢學= =

bbby34 發表於 2010-2-22 11:16 AM

有些大概懂
有些看不懂

johnpk01 發表於 2010-2-22 11:53 AM

謝謝這麼詳細的教學, 學到不少知識

sami012985 發表於 2010-2-24 12:05 AM

回復 12# bbby34


    加油喔   慢慢看吧

sami012985 發表於 2010-2-24 12:06 AM

回復 13# johnpk01


    摁摁    這篇文章很好用喔<br><br><br><br><br><div></div>
頁: [1] 2 3 4 5 6 7 8 9 10