?? 4.txt
字號(hào):
要想在修改游戲中做到百戰(zhàn)百勝,是需要相當(dāng)豐富的計(jì)算機(jī)知識(shí)的。有很多計(jì)算機(jī)高手就是從玩游戲,修改游戲中,逐步對(duì)計(jì)算機(jī)產(chǎn)生濃厚的興趣,逐步成長(zhǎng)起來(lái)的。不要在羨慕別人能夠做到的,因?yàn)閯e人能夠做的你也能夠!我相信你們看了本教程后,會(huì)對(duì)游戲有一個(gè)全新的認(rèn)識(shí),呵呵,因?yàn)槲沂莻€(gè)好老師!(別拿雞蛋砸我呀,救命啊!#¥%……*) 不過(guò)要想從修改游戲中學(xué)到知識(shí),增加自己的計(jì)算機(jī)水平,可不能只是靠修改游戲呀!要知道,修改游戲只是一個(gè)驗(yàn)證你對(duì)你所了解的某些計(jì)算機(jī)知識(shí)的理解程度的場(chǎng)所,只能給你一些發(fā)現(xiàn)問(wèn)題、解決問(wèn)題的機(jī)會(huì),只能起到幫助你提高學(xué)習(xí)計(jì)算機(jī)的興趣的作用,而決不是學(xué)習(xí)計(jì)算機(jī)的捷徑。
一:什么叫外掛?
現(xiàn)在的網(wǎng)絡(luò)游戲多是基于Internet上客戶/服務(wù)器模式,服務(wù)端程序運(yùn)行在游戲服務(wù)器上,游戲的設(shè)計(jì)者在其中創(chuàng)造一個(gè)龐大的游戲空間,各地的玩家可以通過(guò)運(yùn)行客戶端程序同時(shí)登錄到游戲中。簡(jiǎn)單地說(shuō),網(wǎng)絡(luò)游戲?qū)嶋H上就是由游戲開(kāi)發(fā)商提供一個(gè)游戲環(huán)境,而玩家們就是在這個(gè)環(huán)境中相對(duì)自由和開(kāi)放地進(jìn)行游戲操作。那么既然在網(wǎng)絡(luò)游戲中有了服務(wù)器這個(gè)概念,我們以前傳統(tǒng)的修改游戲方法就顯得無(wú)能為力了。記得我們?cè)趩螜C(jī)版的游戲中,隨心所欲地通過(guò)內(nèi)存搜索來(lái)修改角色的各種屬性,這在網(wǎng)絡(luò)游戲中就沒(méi)有任何用處了。因?yàn)槲覀冊(cè)诰W(wǎng)絡(luò)游戲中所扮演角色的各種屬性及各種重要資料都存放在服務(wù)器上,在我們自己機(jī)器上(客戶端)只是顯示角色的狀態(tài),所以通過(guò)修改客戶端內(nèi)存里有關(guān)角色的各種屬性是不切實(shí)際的。那么是否我們就沒(méi)有辦法在網(wǎng)絡(luò)游戲中達(dá)到我們修改的目的?回答是"否"。
我們知道Internet客戶/服務(wù)器模式的通訊一般采用TCP/IP通信協(xié)議,數(shù)據(jù)交換是通過(guò)IP數(shù)據(jù)包的傳輸來(lái)實(shí)現(xiàn)的,一般來(lái)說(shuō)我們客戶端向服務(wù)器發(fā)出某些請(qǐng)求,比如移動(dòng)、戰(zhàn)斗等指令都是通過(guò)封包的形式和服務(wù)器交換數(shù)據(jù)。那么我們把本地發(fā)出消息稱為SEND,意思就是發(fā)送數(shù)據(jù),服務(wù)器收到我們SEND的消息后,會(huì)按照既定的程序把有關(guān)的信息反饋給客戶端,比如,移動(dòng)的坐標(biāo),戰(zhàn)斗的類型。那么我們把客戶端收到服務(wù)器發(fā)來(lái)的有關(guān)消息稱為RECV。知道了這個(gè)道理,接下來(lái)我們要做的工作就是分析客戶端和服務(wù)器之間往來(lái)的數(shù)據(jù)(也就是封包),這樣我們就可以提取到對(duì)我們有用的數(shù)據(jù)進(jìn)行修改,然后模擬服務(wù)器發(fā)給客戶端,或者模擬客戶端發(fā)送給服務(wù)器,這樣就可以實(shí)現(xiàn)我們修改游戲的目的了。
目前除了修改游戲封包來(lái)實(shí)現(xiàn)修改游戲的目的,我們也可以修改客戶端的有關(guān)程序來(lái)達(dá)到我們的要求。我們知道目前各個(gè)服務(wù)器的運(yùn)算能力是有限的,特別在游戲中,游戲服務(wù)器要計(jì)算游戲中所有玩家的狀況幾乎是不可能的,所以有一些運(yùn)算還是要依靠我們客戶端來(lái)完成,這樣又給了我們修改游戲提供了一些便利。比如我們可以通過(guò)將客戶端程序脫殼來(lái)發(fā)現(xiàn)一些程序的判斷分支,通過(guò)跟蹤調(diào)試我們可以把一些對(duì)我們不利的判斷去掉,以此來(lái)滿足我們修改游戲的需求。在下幾個(gè)章節(jié)中,我們將給大家講述封包的概念,和修改跟蹤客戶端的有關(guān)知識(shí)。大家準(zhǔn)備好了嗎?
游戲數(shù)據(jù)格式和存儲(chǔ):
在進(jìn)行我們的工作之前,我們需要掌握一些關(guān)于計(jì)算機(jī)中儲(chǔ)存數(shù)據(jù)方式的知識(shí)和游戲中儲(chǔ)存數(shù)據(jù)的特點(diǎn)。本章節(jié)是提供給菜鳥(niǎo)級(jí)的玩家看的,如果你是高手就可以跳過(guò)了,如果,你想成為無(wú)堅(jiān)不摧的劍客,那么,這些東西就會(huì)花掉你一些時(shí)間;如果,你只想作個(gè)江湖的游客的話,那么這些東西,了解與否無(wú)關(guān)緊要。是作劍客,還是作游客,你選擇吧!
現(xiàn)在我們開(kāi)始!首先,你要知道游戲中儲(chǔ)存數(shù)據(jù)的幾種格式,這幾種格式是:字節(jié)(BYTE)、字(WORD)和雙字(DOUBLE WORD),或者說(shuō)是8位、16位和32位儲(chǔ)存方式。字節(jié)也就是8位方式能儲(chǔ)存0~255的數(shù)字;字或說(shuō)是16位儲(chǔ)存方式能儲(chǔ)存0~65535的數(shù);雙字即32位方式能儲(chǔ)存0~4294967295的數(shù)。
為何要了解這些知識(shí)呢?在游戲中各種參數(shù)的最大值是不同的,有些可能100左右就夠了,比如,金庸群俠傳中的角色的等級(jí)、隨機(jī)遇敵個(gè)數(shù)等等。而有些卻需要大于255甚至大于65535,象金庸群俠傳中角色的金錢(qián)值可達(dá)到數(shù)百萬(wàn)。所以,在游戲中各種不同的數(shù)據(jù)的類型是不一樣的。在我們修改游戲時(shí)需要尋找準(zhǔn)備修改的數(shù)據(jù)的封包,在這種時(shí)候,正確判斷數(shù)據(jù)的類型是迅速找到正確地址的重要條件。
在計(jì)算機(jī)中數(shù)據(jù)以字節(jié)為基本的儲(chǔ)存單位,每個(gè)字節(jié)被賦予一個(gè)編號(hào),以確定各自的位置。這個(gè)編號(hào)我們就稱為地址。
在需要用到字或雙字時(shí),計(jì)算機(jī)用連續(xù)的兩個(gè)字節(jié)來(lái)組成一個(gè)字,連續(xù)的兩個(gè)字組成一個(gè)雙字。而一個(gè)字或雙字的地址就是它們的低位字節(jié)的地址。現(xiàn)在我們常用的Windows 9x操作系統(tǒng)中,地址是用一個(gè)32位的二進(jìn)制數(shù)表示的。而在平時(shí)我們用到內(nèi)存地址時(shí),總是用一個(gè)8位的16進(jìn)制數(shù)來(lái)表示它。
二進(jìn)制和十六進(jìn)制又是怎樣一回事呢?
簡(jiǎn)單說(shuō)來(lái),二進(jìn)制數(shù)就是一種只有0和1兩個(gè)數(shù)碼,每滿2則進(jìn)一位的計(jì)數(shù)進(jìn)位法。同樣,16進(jìn)制就是每滿十六就進(jìn)一位的計(jì)數(shù)進(jìn)位法。16進(jìn)制有0--F十六個(gè)數(shù)字,它為表示十到十五的數(shù)字采用了A、B、C、D、E、F六個(gè)數(shù)字,它們和十進(jìn)制的對(duì)應(yīng)關(guān)系是:A對(duì)應(yīng)于10,B對(duì)應(yīng)于11,C對(duì)應(yīng)于12,D對(duì)應(yīng)于13,E對(duì)應(yīng)于14,F(xiàn)對(duì)應(yīng)于15。而且,16進(jìn)制數(shù)和二進(jìn)制數(shù)間有一個(gè)簡(jiǎn)單的對(duì)應(yīng)關(guān)系,那就是;四位二進(jìn)制數(shù)相當(dāng)于一位16進(jìn)制數(shù)。比如,一個(gè)四位的二進(jìn)制數(shù)1111就相當(dāng)于16進(jìn)制的F,1010就相當(dāng)于A。
了解這些基礎(chǔ)知識(shí)對(duì)修改游戲有著很大的幫助,下面我就要談到這個(gè)問(wèn)題。由于在計(jì)算機(jī)中數(shù)據(jù)是以二進(jìn)制的方式儲(chǔ)存的,同時(shí)16進(jìn)制數(shù)和二進(jìn)制間的轉(zhuǎn)換關(guān)系十分簡(jiǎn)單,所以大部分的修改工具在顯示計(jì)算機(jī)中的數(shù)據(jù)時(shí)會(huì)顯示16進(jìn)制的代碼,而且在你修改時(shí)也需要輸入16進(jìn)制的數(shù)字。你清楚了吧?
在游戲中看到的數(shù)據(jù)可都是十進(jìn)制的,在要尋找并修改參數(shù)的值時(shí),可以使用Windows提供的計(jì)算器來(lái)進(jìn)行十進(jìn)制和16進(jìn)制的換算,我們可以在開(kāi)始菜單里的程序組中的附件中找到它。
現(xiàn)在要了解的知識(shí)也差不多了!不過(guò),有個(gè)問(wèn)題在游戲修改中是需要注意的。在計(jì)算機(jī)中數(shù)據(jù)的儲(chǔ)存方式一般是低位數(shù)儲(chǔ)存在低位字節(jié),高位數(shù)儲(chǔ)存在高位字節(jié)。比如,十進(jìn)制數(shù)41715轉(zhuǎn)換為16進(jìn)制的數(shù)為A2F3,但在計(jì)算機(jī)中這個(gè)數(shù)被存為F3A2。
看了以上內(nèi)容大家對(duì)數(shù)據(jù)的存貯和數(shù)據(jù)的對(duì)應(yīng)關(guān)系都了解了嗎?好了,接下來(lái)我們要告訴大家在游戲中,封包到底是怎么一回事了,來(lái)!大家把袖口卷起來(lái),讓我們來(lái)干活吧
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -