网页外挂技术浅谈(入门篇)
轉(zhuǎn)載自?http://gamebot.uueasy.com/read-htm-tid-215-page-1.html
?
其實(shí)網(wǎng)頁(yè)外掛所用的技術(shù)很簡(jiǎn)單,只不過(guò)這是一個(gè)技術(shù)上的禁區(qū),極少有書(shū)籍和資料介紹而已。
在繼續(xù)往下看之前,你至少需要了解:
1.http協(xié)議的基本含義
2.socket通信基礎(chǔ)
3.一門(mén)常規(guī)開(kāi)發(fā)語(yǔ)言及軟件開(kāi)發(fā)基礎(chǔ)
4.動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)基礎(chǔ)
網(wǎng)頁(yè)游戲采用的通訊協(xié)議多種多樣,常見(jiàn)的有:
1.純http。如:商業(yè)大亨、36計(jì)、天問(wèn)等。
2.AMF協(xié)議。AMF協(xié)議是一種擴(kuò)展的http協(xié)議,采用該協(xié)議的頁(yè)游一定是flash的,如:熱血三國(guó)、絕地戰(zhàn)爭(zhēng)等。
3.socket協(xié)議。此類頁(yè)游更接近傳統(tǒng)的客戶端網(wǎng)游,采用加密的數(shù)據(jù)包進(jìn)行通訊,制作外掛難度遠(yuǎn)遠(yuǎn)超過(guò)上述2種。
4.其他。
協(xié)議分析
想要制作一個(gè)頁(yè)游的外掛,我們首先要知道它是采用什么協(xié)議進(jìn)行通訊的,我們需要用網(wǎng)絡(luò)監(jiān)聽(tīng)軟件進(jìn)行協(xié)議分析。
推薦:
1.HTTPAnalyzerFullV5。強(qiáng)大的http通訊監(jiān)聽(tīng)軟件,可以分析純http和AMF通訊。
各大下載站點(diǎn)均有下載,能下載到注冊(cè)機(jī)。
2.科來(lái)網(wǎng)絡(luò)分析系統(tǒng) 2010 技術(shù)交流版。目前最好用的全方面網(wǎng)絡(luò)分析軟件,用于分析socket通信最方便。
這是國(guó)產(chǎn)品牌,可到官方網(wǎng)站下載,然后用email申請(qǐng)一個(gè)免費(fèi)序列號(hào)即可。
作為初學(xué)者,我們從純http的頁(yè)游入手。
運(yùn)行HTTPAnalyzerFullV5,然后打開(kāi)網(wǎng)頁(yè),進(jìn)入游戲。點(diǎn)擊HTTPAnalyzerFullV5上的"start"開(kāi)始監(jiān)聽(tīng),然后在游戲中隨便進(jìn)行點(diǎn)操作,這個(gè)時(shí)候HTTPAnalyzerFullV5中應(yīng)該會(huì)有數(shù)據(jù)展現(xiàn)了。在數(shù)據(jù)表格的Type一欄,我們可以看到數(shù)據(jù)的類型。
如果每進(jìn)行一個(gè)游戲操作,HTTPAnalyzerFullV5中都增加一條Type為text/html的通訊記錄,那么無(wú)疑這個(gè)頁(yè)游是采用純http協(xié)議的。
如果每進(jìn)行一個(gè)游戲操作,HTTPAnalyzerFullV5中都增加一條Type為application/x-amf的通訊記錄,那么這個(gè)頁(yè)游一定是采用AMF協(xié)議的。
下課了,實(shí)踐一下協(xié)議分析吧。
繼續(xù)...如果我們發(fā)現(xiàn)手上的這款游戲是純http協(xié)議的游戲,比如36計(jì)、天策、天問(wèn)之類的,該如何入手呢。
先看下HTTPAnalyzerFullV5抓到的數(shù)據(jù)吧。
從HTTPAnalyzerFullV5的界面可以看到,HTTPAnalyzerFullV5分為上下兩欄,上面是數(shù)據(jù)列表,下面是選中的一條通訊的具體數(shù)據(jù)。
在下面一欄中,我們主要關(guān)心的是3項(xiàng)數(shù)據(jù):
1.Header。這是http通訊的包頭,從這兒我們可以看到host、cookies、referer之類的數(shù)據(jù)。
2.Response Content。這是服務(wù)器方的響應(yīng)數(shù)據(jù),也就是這次通訊從服務(wù)器端得到的內(nèi)容,是游戲里面的相關(guān)數(shù)據(jù)。格式可能五花八門(mén),但一般說(shuō)來(lái)是可以理解的字符串。比如:"{兵種:步兵;數(shù)量10000;速度:5}"或者"{恭喜你,升級(jí)成功。}"之類的數(shù)據(jù),當(dāng)然一般說(shuō)來(lái)是英文表達(dá)的,你必須得讀懂它。
3.Post Data。這是客戶端的發(fā)送數(shù)據(jù),也就是指你在游戲中進(jìn)行了什么操作。對(duì)于純http協(xié)議的頁(yè)游來(lái)說(shuō),這一項(xiàng)經(jīng)常為空,因?yàn)槊織l游戲指令的參數(shù)可能是直接寫(xiě)在url中。
以36計(jì)為例,我們進(jìn)入游戲,打開(kāi)監(jiān)聽(tīng),點(diǎn)一下英雄府升級(jí),此時(shí)HTTPAnalyzerFullV5中獲得一條新的通訊數(shù)據(jù)。如果我們能用軟件模擬這次通訊,那么就相當(dāng)于在軟件中進(jìn)行英雄府升級(jí)了。
對(duì)于純http通訊的模擬,我推薦使用XMLHTTPRequest方法。
XMLHTTPRequest是存在于msxml2.dll中的一個(gè)函數(shù),msxml2.dll在任何一臺(tái)windows中都有。而且這是一個(gè)AxtiveX的DLL,能被任何開(kāi)發(fā)語(yǔ)言調(diào)用,甚至是被網(wǎng)頁(yè)調(diào)用。
XMLHTTPRequest的作用是:對(duì)指定的服務(wù)器發(fā)起一個(gè)http請(qǐng)求,并獲取返回的數(shù)據(jù)。
XMLHTTPRequest在各種語(yǔ)言下都能找到大量的例程,只需要上網(wǎng)搜索一下即可。
下面,了解一下XMLHTTPRequest并寫(xiě)個(gè)簡(jiǎn)單的程序來(lái)獲取baidu首頁(yè)的內(nèi)容吧,這是網(wǎng)頁(yè)外掛最基礎(chǔ)也是最核心的技術(shù)。
XMLHTTPRequest的VB簡(jiǎn)單示例:
set xhttp = createObject("msxml2.XMLHTTP")??
xhttp.open "POST", "http://www.baidu.com", False??‘False表示不采用異步方式
xhttp.send
ret = xhttp.responseText??'ret即返回內(nèi)容,此處為百度首頁(yè)的內(nèi)容
這是使用XMLHTTPRequest同步調(diào)用方法,缺點(diǎn)是當(dāng)內(nèi)容沒(méi)有返回時(shí),軟件會(huì)一直處于等待狀態(tài),不能干其他任何事,所以我們一般采用異步方式調(diào)用。
異步方式與此大同小異,上網(wǎng)搜索一下吧。
在36計(jì)中,假如升級(jí)英雄府的referer是"http://36ji.com/updatehouse.php?houseid=1",那么我們?cè)谲浖杏肵MLHTTPRequest模擬一次這個(gè)url的請(qǐng)求,就會(huì)在返回內(nèi)容中看到諸如"{英雄府已經(jīng)成功升級(jí)}"之類的文本。同時(shí)你會(huì)發(fā)現(xiàn),游戲中的英雄府真的升級(jí)了!
當(dāng)然在這之前,還有個(gè)很重要的工作就是登錄。
要實(shí)現(xiàn)在客戶端登錄有2種方案:
1.在客戶端嵌入IE組件,用戶在IE組件中打開(kāi)游戲網(wǎng)頁(yè)登錄,那么這個(gè)IE組件就獲得了登錄憑證,這個(gè)憑證在動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)中通稱:Session。
2.分析登錄過(guò)程,自己用代碼實(shí)現(xiàn)登錄過(guò)程,然后保存登錄憑證Session備用。
考慮到網(wǎng)頁(yè)游戲一般都由多個(gè)運(yùn)營(yíng)商聯(lián)運(yùn),所以如果自己寫(xiě)脫機(jī)的登錄比較麻煩,要針對(duì)每個(gè)不同的運(yùn)營(yíng)商的登錄接口寫(xiě)登錄過(guò)程,所以一般推薦用嵌入IE登錄。
嵌入IE登錄很簡(jiǎn)單,在你的程序中放入一個(gè)IE組件,用戶在這個(gè)IE組件中打開(kāi)游戲網(wǎng)頁(yè),完成登錄。
這里要提到XMLHTTPRequest的一個(gè)重要特性。
XMLHTTPRequest本身是不能為其設(shè)置Session的(深入了解動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)的朋友可能了解,設(shè)置Session其實(shí)就是設(shè)置Cookies,雖然二者并不一樣。)。但是XMLHTTPRequest會(huì)自動(dòng)獲得應(yīng)用程序本身獲得的Session,也就是說(shuō),在你自己的程序中嵌入了IE,如果用戶在這個(gè)IE中完成了登錄,那么這個(gè)程序中的XMLHTTPRequest將自動(dòng)獲得IE中的所有Session。
這個(gè)特性是把雙刃劍,一方面,它給開(kāi)發(fā)帶來(lái)了便利,我們不再需要對(duì)XMLHTTPRequest設(shè)置登錄憑證;另一方面,這意味著我們的程序運(yùn)行一次只能開(kāi)一個(gè)賬號(hào),不能實(shí)現(xiàn)子窗體多開(kāi)的效果。如果要實(shí)現(xiàn)子窗體多開(kāi)的效果,我們則需要使用其他更為靈活的http訪問(wèn)組件。
作為初學(xué)者,還是推薦使用XMLHTTPRequest,畢竟簡(jiǎn)單易用。
如果你完全理解了上述內(nèi)容,那么你就應(yīng)該有個(gè)大概的流程模型。
1。監(jiān)聽(tīng)游戲過(guò)程,獲取http請(qǐng)求細(xì)節(jié)。
2。在程序中嵌入IE,通過(guò)IE登錄獲取登錄憑證。
3。使用XMLHTTPRequest模擬http請(qǐng)求。
入門(mén)篇介紹到這兒,接下來(lái)我們將進(jìn)行初級(jí)實(shí)戰(zhàn)篇。我們以36計(jì)這個(gè)游戲作為練手對(duì)象,因?yàn)檫@個(gè)游戲的通訊既不太難,也不至于太簡(jiǎn)單。
總結(jié)
以上是生活随笔為你收集整理的网页外挂技术浅谈(入门篇)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql windows局域网访问_w
- 下一篇: 浅谈什么是SEO?如何优化SEO?