《熱血三國》好像是比較熱,玩的人也挺多的,年前一個(gè)朋友希望能讓我寫(xiě)一個(gè)這個(gè)游戲的外掛,也出于無(wú)聊,所以去玩了一下,誰(shuí)知道一玩就有點(diǎn)喜歡這個(gè)游戲了,當然玩歸玩,東西還是要做地,當然還不能算得上是外掛,最多算是一個(gè)輔助工具。
三國,是一個(gè)全Flash制作的網(wǎng)頁(yè)游戲,使用Flex做架構,使用AMF協(xié)議做數據通訊。
首先針對一款FLASH網(wǎng)頁(yè)游戲大家需要了解他的AMF協(xié)議調用模式,就三國而言,服務(wù)器返回的消息全為AMF0格式,客戶(hù)端向服務(wù)器提交的是AMF3的格式。
剛開(kāi)始分析這款游戲的時(shí)候想著(zhù)自己建一個(gè)AMF協(xié)議解析器,但由于做出來(lái)的功能局限性比較大時(shí)間倉促,因此從網(wǎng)上找到了FluorineFx開(kāi)源組件,要做好一款功能強大的網(wǎng)頁(yè)游戲工具我自己覺(jué)得應該做到功能脫機,要能在工具中獨立完成各種功能調用,做全點(diǎn)就相當于為游戲的客戶(hù)端。
但做之前最頭痛的問(wèn)題就是分析協(xié)議調用參數及返回參數結構,在做這個(gè)工具前我對Flash Flex是一無(wú)所知,對AS的編寫(xiě)還只是停留在Flash 5的程度上并且已是近十年未用了。。。
為了方便使用了以下幾種工具
SWFDecompiler的SWF文件反編譯工具
Notepad++文本編輯工具,主要用來(lái)整個(gè)目錄查找指定文本(用WINDOWS的查找功能太讓人失望了)
科來(lái)網(wǎng)絡(luò )分析系統,用來(lái)獲取網(wǎng)絡(luò )通訊數據
SocketSniff,相對科來(lái)系統更輕量級的網(wǎng)絡(luò )監聽(tīng)工具,對于了解基本通訊流程更為方便
以上幾種是通過(guò)網(wǎng)絡(luò )能找到的實(shí)用工具,再加一自己做的一個(gè)AMF協(xié)議半自動(dòng)分析器,主要功能是解析HEX DATA的AMF協(xié)議,及跟蹤游戲AMF協(xié)議通訊過(guò)程,并簡(jiǎn)單解析體現,為更進(jìn)一步分析調用過(guò)程提供參考。
一個(gè)AMF通訊過(guò)程的分析:
1.打開(kāi)網(wǎng)頁(yè)游戲,并在你需要獲取命令的功能前停止操作
2.打開(kāi)網(wǎng)絡(luò )嗅探器,并執行嗅探,在此過(guò)程中最好能按IP、端口進(jìn)行過(guò)濾
3.執行所需要的命令,并等待命令執行返回
4.停止網(wǎng)絡(luò )嗅探
5.去除無(wú)關(guān)網(wǎng)絡(luò )通訊數據,AMF協(xié)議下必定會(huì )有一個(gè)業(yè)務(wù)處理的gateway,像三國的地址為:/server/amfPHP/gateway.php,并且HTTP頭部的內容格式為application/x-amf,因此只需要過(guò)濾相關(guān)gateway的通訊對話(huà)就可以
6.獲得通訊的HTTP數據體,并交分析工具進(jìn)行協(xié)議解析
7.查看協(xié)議參數結構,并償試重構協(xié)議復本
8.償試將協(xié)議復本發(fā)送至服務(wù)器(請求協(xié)議)
9.調試服務(wù)器反饋數據,調試完成后即為游戲的實(shí)際AMF協(xié)議函數
在三國中,使用三種Flex消息:CommandMessage、RemotingMessage、AcknowledgeMessage
CommandMessage在游戲登錄前向服務(wù)器發(fā)送請求,并返回session等安全信息
RemotingMessage為客戶(hù)端向服務(wù)器提交的消息格式
AcknowledgeMessage服務(wù)器向客戶(hù)端反饋的消息格式
目前工具的游戲界面
登錄后主界面(可分脫機跟非脫機登錄,下面為非脫機登錄,其實(shí)只不過(guò)顯示了一個(gè)游戲界面而已,里面的處理都是按脫機模式處理)
游戲輔助信息
地圖查詢(xún)工具