《熱血三國》好像是比較熱,玩的人也挺多的,年前一個朋友但願能讓我寫一個這個遊戲的外掛,也出於無聊,因此去玩了一下,誰知道一玩就有點喜歡這個遊戲了,固然玩歸玩,東西仍是要作地,固然還不能算得上是外掛,最多算是一個輔助工具。php
三國,是一個全FLASH製做的網頁遊戲,使用Flex作架構,使用AMF協議作數據通信。安全
首先針對一款FLASH網頁遊戲你們須要瞭解他的AMF協議調用模式,就三國而言,服務器返回的消息全爲AMF0格式,客戶端向服務器提交的是AMF3的格式。服務器
剛開始分析這款遊戲的時候想着本身建一個AMF協議解析器,但因爲作出來的功能侷限性比較大時間倉促,所以從網上找到了FluorineFx開源組件,要作好一款功能強大的網頁遊戲工具我本身以爲應該作到功能脫機,要能在工具中獨立完成各類功能調用,作全點就至關於爲遊戲的客戶端。網絡
但作以前最頭痛的問題就是分析協議調用參數及返回參數結構,在作這個工具前我對Flash Flex是一無所知,對AS的編寫還只是停留在Flash 5的程度上而且已經是近十年未用了。。。session
爲了方便使用瞭如下幾種工具架構
SWFDecompiler的SWF文件反編譯工具app
Notepad++文本編輯工具,主要用來整個目錄查找指定文本(用WINDOWS的查找功能太讓人失望了)函數
科來網絡分析系統,用來獲取網絡通信數據工具
SocketSniff,相對科來系統更輕量級的網絡監聽工具,對於瞭解基本通信流程更爲方便spa
以上幾種是經過網絡能找到的實用工具,再加一本身作的一個AMF協議半自動分析器,主要功能是解析HEX DATA的AMF協議,及跟蹤遊戲AMF協議通信過程,並簡單解析體現,爲更進一步分析調用過程提供參考。
一個AMF通信過程的分析:
1.打開網頁遊戲,並在你須要獲取命令的功能前中止操做
2.打開網絡嗅探器,並執行嗅探,在此過程當中最好能按IP、端口進行過濾
3.執行所須要的命令,並等待命令執行返回
4.中止網絡嗅探
5.去除無關網絡通信數據,AMF協議下一定會有一個業務處理的gateway,像三國的地址爲:/server/amfphp/gateway.php,而且HTTP頭部的內容格式爲application/x-amf,所以只須要過濾相關gateway的通信對話就能夠
6.得到通信的HTTP數據體,並交分析工具進行協議解析
7.查看協議參數結構,並償試重構協議複本
8.償試將協議複本發送至服務器(請求協議)
9.調試服務器反饋數據,調試完成後即爲遊戲的實際AMF協議函數
在三國中,使用三種Flex消息:CommandMessage、RemotingMessage、AcknowledgeMessage
CommandMessage在遊戲登陸前向服務器發送請求,並返回session等安全信息
RemotingMessage爲客戶端向服務器提交的消息格式
AcknowledgeMessage服務器向客戶端反饋的消息格式
目前工具的遊戲界面
登陸後主界面(可分脫機跟非脫機登陸,下面爲非脫機登陸,其實只不過顯示了一個遊戲界面而已,裏面的處理都是按脫機模式處理)
遊戲輔助信息
地圖查詢工具