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