- C#網(wǎng)絡(luò)編程高級(jí)篇之網(wǎng)頁游戲輔助程序設(shè)計(jì)
- 張慧斌 王小峰 郝愛峰
- 2105字
- 2019-01-09 15:14:41
前言
在常年的程序設(shè)計(jì)語言教學(xué)實(shí)踐中,筆者發(fā)現(xiàn),已經(jīng)具備一定編程基礎(chǔ)的學(xué)生,如果沒有經(jīng)歷過大一點(diǎn)的系統(tǒng)項(xiàng)目開發(fā),其編程水平很難再有提高;但是開發(fā)系統(tǒng)項(xiàng)目的機(jī)會(huì)對(duì)初學(xué)者來說并不是容易獲得的,因此筆者在程序設(shè)計(jì)教學(xué)中嘗試引進(jìn)游戲的輔助程序設(shè)計(jì),以替代系統(tǒng)項(xiàng)目開發(fā)的實(shí)踐。
游戲輔助程序設(shè)計(jì)技術(shù)對(duì)初學(xué)者來說是非常神秘的,卻又是非常感興趣的編程技術(shù)。游戲輔助程序設(shè)計(jì)技術(shù)是門高深的編程技術(shù),很多初學(xué)者就是在從玩游戲、修改游戲、編寫游戲程序到設(shè)計(jì)游戲的輔助程序的過程中逐步成長起來的,最后成為程序設(shè)計(jì)高手。
筆者在教學(xué)的課后作業(yè)中讓學(xué)生進(jìn)行游戲輔助程序設(shè)計(jì),讓他們邊玩游戲邊開發(fā)游戲輔助程序,這樣極大地提高了他們的編程興趣和積極性,同時(shí)大大提高了他們的編程水平,教學(xué)效果非常明顯。相對(duì)來說,能達(dá)到比開發(fā)系統(tǒng)項(xiàng)目更好的效果。
現(xiàn)在的網(wǎng)絡(luò)游戲以網(wǎng)頁游戲?yàn)橹鳎@種游戲非常流行、火爆。網(wǎng)頁游戲是基于Internet上客戶-服務(wù)器模式的,其中服務(wù)端程序運(yùn)行在游戲服務(wù)器上,玩家可以通過運(yùn)行客戶端程序同時(shí)登錄到游戲中。既然在網(wǎng)絡(luò)游戲中有了服務(wù)器這個(gè)概念,我們以前傳統(tǒng)的修改游戲的方法就顯得無能為力了。在單機(jī)版的游戲中,可以隨心所欲地通過內(nèi)存搜索來修改角色的各種屬性,這種方法在網(wǎng)絡(luò)游戲中就沒有任何用處了。因?yàn)樵诰W(wǎng)絡(luò)游戲中的角色的各種屬性及各種重要資料都存放在服務(wù)器上,在玩家的機(jī)器上(客戶端)只是顯示角色的狀態(tài),所以通過修改客戶端內(nèi)存里有關(guān)角色的各種屬性是不切實(shí)際的。
我們知道Internet客戶-服務(wù)器模式的通信一般采用TCP/IP通信協(xié)議,其數(shù)據(jù)交換是通過IP數(shù)據(jù)包的傳輸來實(shí)現(xiàn)的;一般來說,客戶端向服務(wù)器發(fā)出的某些請(qǐng)求,比如移動(dòng)、戰(zhàn)斗等指令,都是通過封包的形式和服務(wù)器交換數(shù)據(jù)的。那么,我們把本地發(fā)出消息稱為Send,意思就是發(fā)送數(shù)據(jù),服務(wù)器收到Send的消息后,會(huì)按照既定的程序把有關(guān)的信息反饋給客戶端,比如移動(dòng)的坐標(biāo)、戰(zhàn)斗的類型;把客戶端收到服務(wù)器發(fā)來的有關(guān)消息稱為Receive。知道了這個(gè)道理,接下來我們要做的工作就是分析客戶端和服務(wù)器之間往來的數(shù)據(jù)(也就是封包),這樣就可以提取到對(duì)我們有用的數(shù)據(jù)并進(jìn)行修改,然后模擬服務(wù)器發(fā)給客戶端,或者模擬客戶端發(fā)送給服務(wù)器,從而達(dá)到修改游戲的目的了。
我們把上述對(duì)游戲數(shù)據(jù)包的修改程序稱為網(wǎng)絡(luò)游戲輔助程序。這種輔助程序就是網(wǎng)絡(luò)游戲封包,一般在設(shè)計(jì)時(shí)都是針對(duì)某個(gè)游戲的某個(gè)版本來做的,針對(duì)性很強(qiáng)。因?yàn)槊總€(gè)網(wǎng)絡(luò)游戲服務(wù)器與客戶端交流的數(shù)據(jù)包各不相同,輔助程序必須對(duì)網(wǎng)絡(luò)游戲服務(wù)器的數(shù)據(jù)包進(jìn)行分析,才能產(chǎn)生服務(wù)器識(shí)別的數(shù)據(jù)包。這類程序也是當(dāng)前最流行的一類游戲輔助程序。輔助程序可以協(xié)助玩家自動(dòng)產(chǎn)生游戲動(dòng)作、修改游戲網(wǎng)絡(luò)數(shù)據(jù)包以及修改游戲內(nèi)存數(shù)據(jù)等,以便玩家用最少的時(shí)間和金錢去完成功力升級(jí)、過關(guān)斬將。
Microsoft.NET是一種面向網(wǎng)絡(luò)支持各種用戶終端的開發(fā)平臺(tái)環(huán)境;微軟的目標(biāo)是讓Microsoft.NET徹底改變軟件的開發(fā)方式、發(fā)行方式和使用方式等,并且不只針對(duì)微軟一家,而是面向所有開發(fā)商與運(yùn)營商。.NET的核心內(nèi)容之一就是要搭建第三代互聯(lián)網(wǎng)平臺(tái),這個(gè)網(wǎng)絡(luò)平臺(tái)將解決網(wǎng)站之間的協(xié)同合作問題,從而最大限度地獲取信息。在.NET平臺(tái)上,不同網(wǎng)站之間通過相關(guān)的協(xié)定聯(lián)系在一起,網(wǎng)站之間形成自動(dòng)交流,協(xié)同工作,提供最全面的服務(wù)。
C#是一種面向Internet和企業(yè)級(jí)應(yīng)用的新一代編程語言,它是專門為.NET設(shè)計(jì)的,是一種安全、穩(wěn)定、簡(jiǎn)單、優(yōu)雅的,由C和C++衍生出來的面向?qū)ο蟮木幊陶Z言。C#在繼承C和C++強(qiáng)大功能的同時(shí)去掉了一些復(fù)雜特性,它以其強(qiáng)大的操作能力、優(yōu)雅的語法風(fēng)格、創(chuàng)新的語言特性和便捷的面向組件編程而成為.NET開發(fā)的首選語言,并且成為ECMA與ISO的標(biāo)準(zhǔn)規(guī)范。
開發(fā)網(wǎng)頁游戲的輔助程序?qū)儆诰W(wǎng)絡(luò)編程技術(shù),因此采用.NET的組件之一C#語言來設(shè)計(jì)網(wǎng)絡(luò)程序,本書的網(wǎng)頁游戲輔助程序就是用C#編寫的。網(wǎng)絡(luò)游戲輔助程序具有很高的技術(shù)含量,在這些程序中使用了許多高端技術(shù),如攔截Socket技術(shù)、攔截API技術(shù)、模擬鍵盤和鼠標(biāo)技術(shù)、直接修改程序內(nèi)存技術(shù),等等。本書將對(duì)常見的游戲輔助程序的封包技術(shù)進(jìn)行全面的剖析。
本書以實(shí)例與原理相結(jié)合的方式講解編程開發(fā)思路向每一位有志于從事網(wǎng)絡(luò)編程開發(fā)的讀者介紹這種熱門的程序開發(fā)技術(shù)。
本書的所有程序均在Microsoft Visual Studio 2008簡(jiǎn)體中文版開發(fā)環(huán)境下調(diào)試通過,程序本身沒有錯(cuò)誤,但是由于提供網(wǎng)絡(luò)游戲的商家可能不斷升級(jí)游戲、變換密碼系統(tǒng)、使用防外掛技術(shù),等等,因此不能保證讀者拿到的程序任何時(shí)刻都能起到輔助游戲的功能,如果不能起到網(wǎng)頁游戲輔助的作用,讀者可按照輔助程序設(shè)計(jì)的思路和辦法,對(duì)輔助程序重新進(jìn)行小幅修改,或者重新設(shè)計(jì)解碼系統(tǒng)。雖然網(wǎng)頁游戲可能不斷變換,但是設(shè)計(jì)網(wǎng)頁游戲輔助程序的方法和總體思路是不會(huì)變的,注重設(shè)計(jì)輔助程序的方法和思路,才能不斷升級(jí)輔助程序。
游戲輔助程序設(shè)計(jì)是一個(gè)驗(yàn)證對(duì)某些計(jì)算機(jī)知識(shí)的理解程度的方法,是發(fā)現(xiàn)問題、解決問題的機(jī)會(huì),它只能起到提高學(xué)習(xí)計(jì)算機(jī)編程的興趣的作用,而決不是學(xué)習(xí)計(jì)算機(jī)編程的萬能鑰匙。
由于C#網(wǎng)絡(luò)編程輔助程序設(shè)計(jì)技術(shù)所涉及的知識(shí)面極為廣泛,而筆者的知識(shí)面又很有限,因此盡管筆者對(duì)本書中所涉及的內(nèi)容一再推敲和仔細(xì)研究,仍有可能出現(xiàn)錯(cuò)誤和紕漏,希望廣大讀者批評(píng)指正。
本書相關(guān)的代碼資料可在電子工業(yè)出版社官網(wǎng)“在線資源”中下載。
筆者
- Visual C++串口通信開發(fā)入門與編程實(shí)踐
- 構(gòu)建移動(dòng)網(wǎng)站與APP:HTML 5移動(dòng)開發(fā)入門與實(shí)戰(zhàn)(跨平臺(tái)移動(dòng)開發(fā)叢書)
- 劍指JVM:虛擬機(jī)實(shí)踐與性能調(diào)優(yōu)
- Offer來了:Java面試核心知識(shí)點(diǎn)精講(原理篇)
- The Computer Vision Workshop
- Java Web程序設(shè)計(jì)任務(wù)教程
- Java系統(tǒng)化項(xiàng)目開發(fā)教程
- Swift Playgrounds少兒趣編程
- Learning Concurrency in Kotlin
- 51單片機(jī)C語言開發(fā)教程
- R數(shù)據(jù)科學(xué)實(shí)戰(zhàn):工具詳解與案例分析
- Unity 3D腳本編程:使用C#語言開發(fā)跨平臺(tái)游戲
- Scratch·愛編程的藝術(shù)家
- 一步一步學(xué)Spring Boot:微服務(wù)項(xiàng)目實(shí)戰(zhàn)(第2版)
- Microsoft XNA 4.0 Game Development Cookbook