|
🐟 MapleShark 使用教學一、工具介紹 MapleShark 是一個專門用來: - 攔截(sniff)封包
- 解析(decode)封包
- 分析 opcode / 資料格式
👉 常用於: 二、準備工具你需要以下幾樣東西: 1️⃣ MapleShark 主程式2️⃣ WinPcap(抓封包必備)
https://www.winpcap.org/ 三、啟動前設定1️⃣ 以系統管理員執行 MapleShark (不用也可) 2️⃣ 選擇網卡(Network Adapter)打開 MapleShark 後: - 點選 File => MapleShark Setup
- 選擇你的網路卡(通常是)
四、開始抓封包1️⃣ 點擊「Start Capture」(預設會自動啟動)👉 開始監聽封包 2️⃣ 打開《新楓之谷》👉 登入遊戲後你會看到: - 封包開始出現
- 分為:
- Outbound(你發出去)
- Inbound(伺服器回來)
五、封包解析(重點🔥)1️⃣ 選擇封包點一個封包後會看到(範例為handshake packet):
- Hex 資料
- ASCII
- 解碼後結構(如果有 script)
2️⃣ Opcode 概念每個封包前面會有: 👉 Opcode(操作碼) 例如(假設):
0x0015 → Login Request
0x00A3 → Move Player
👉 你需要: 3️⃣ 解密(最關鍵)MapleStory 封包通常有加密: 因此你開發新版本需要更新AES key
然後打開在資料夾底下的cached_keys.txt 輸入key 並儲存
每個版本的key 格式為下:
''' <地區(TMS為6)>:<遊戲版本(如277)>.1 <AES key> ''' 例如TMS v277為
6:277.1 5E4CEC034C73E605B4310EAAADCFD5B0CA27FFD89D144DF4792759427C9CC1F8 六、載入 Script(進階解析)MapleShark 支援 script: 👉 功能: 使用方式:
快速點擊兩下封包 會跳出script編輯器
script的基本使用方式為下(AI協助翻譯)
📘 Interface(介面)保留(Reserved) 📘 Scripting(腳本系統) 📌 函式說明格式所有函式皆遵循以下格式:
<回傳型別> <函式名稱>(<參數>)
📌 Script 環境說明在腳本中只會暴露一個物件: 👉 ScriptAPI 所有函式都需透過此物件呼叫,例如:
ScriptAPI.AddByte("Example");
🧩 資料解析函式 🔹 byte AddByte(string name)新增一個「無符號位元組(byte)」欄位到結構視圖中,並以指定名稱命名,回傳該值。 🔹 sbyte AddSByte(string name)新增一個「有符號位元組(sbyte)」欄位,並回傳其值。 🔹 ushort AddUShort(string name)新增一個「無符號短整數(ushort)」欄位,並回傳其值。 🔹 short AddShort(string name)新增一個「有符號短整數(short)」欄位,並回傳其值。 🔹 uint AddUInt(string name)新增一個「無符號整數(uint)」欄位,並回傳其值。 🔹 int AddInt(string name)新增一個「有符號整數(int)」欄位,並回傳其值。 🔹 float AddFloat(string name)新增一個「4 位元組浮點數(float)」欄位,並回傳其值。 🔹 double AddDouble(string name)新增一個「4 位元組雙精度浮點數(double)」欄位,並回傳其值。
(⚠️ 注意:此描述可能為舊版本錯誤) 🔹 bool AddBool(string name)新增一個「布林值(bool)」欄位(1 byte): 並回傳其值。 🔹 long AddLong(string name)新增一個「有符號長整數(long)」欄位,並回傳其值。 🔹 double AddDouble(string name)新增一個「8 位元組雙精度浮點數(double)」欄位,並回傳其值。 🔹 string AddPaddedString(string name, int length)新增一個「固定長度字串」欄位: 並回傳該字串內容。 🔹 void AddField(string name, int length)新增一個指定長度的欄位到結構視圖中(純資料區塊),不回傳值。 🌳 結構節點(用來分層顯示) 🔹 void StartNode(string name)建立一個子節點(Node),並作為新的父節點,直到呼叫 EndNode。 🔹 void EndNode(bool expand)結束最近一次的 StartNode: - expand = true → 預設展開節點
- expand = false → 預設收合
📂 檔案操作 🔹 void Write(string file, string line)將指定文字 line 追加寫入到檔案 file 中。 📊 其他功能 🔹 int Remaining()回傳封包中「尚未被解析的剩餘位元組數量」。
大概這樣 如果需要script實戰範例 底下留言敲碗
|