增加道具種類

୧༼✿ ͡◕ д ◕͡ ༽୨ 法蘭城的約定
回覆文章
fantastic
技術組
文章: 33
註冊時間: 2020-08-25, 14:03

增加道具種類

文章 fantastic »

進到http://127.0.0.1/adminer.php
選擇tbl_item 來修改身上的道具Type值 為56 然後進入遊戲我們會發現 道具種類會變成不明
知道了這一點我們就可以利用這一點來查找相關代碼
UE打開搜尋ASCII查找不明 定位到不明 雙手斧 雙手劍這裡 滑鼠點一下定位好看右下角顯示的position: 21da25h


pos.png
pos.png (318.63 KiB) 已瀏覽 872 次

IDA載入cgmsv這裡我用的是21.2a版本的cgmsv 按alt 然後按j(Jump) 再按o(Offset) 輸入0x21da25 按下Enter
然後我們看到'不明'字符串的上級引用可能是我們感興趣的 點進去看看


ref.png
ref.png (252.37 KiB) 已瀏覽 872 次

如果你不是在視圖模式按一下空白鍵切換到視圖模式
往上稍微滾動一下 我們可以很容易發現上面的一串關鍵指令
.text:004CA45A 02C 83 FA 37 cmp edx, 55
.text:004CA45D 02C 77 61 ja short loc_4CA4C0

這裡是edx寄存器的值和55比較 大於時則跳轉
我們暫且可以推測後面我們把這個37h(55)修改就可以初步往我們想要的發展操作
然後跟著的紅線的是不滿足條件大於55時的操作
.text:004CA461 02C 8B 04 95 00 FB 61 00 mov eax, off_61FB00[edx*4] ; "單手劍"
點進去可以發現就是正常1~55的道具種類名稱字串的參考地址 再點進去才是這些道具種類的字符串
初步評估我們需要55*4+n*4個字節的空間來寫入 道具種類字串的地址指引 n是要擴展的種類數量 這裡我們打算增加寵物項圈 寵物飾品 寵物服裝 寵物裝甲 寵物晶石
得55*4+5*4 = 240
這裡我有一個好主意 我們另尋空間來輸入這些道具種類名稱 而原來存放道具種類名稱的地方我們就拿來擴充更多的地址
道具種類名稱要存放在哪裡呢 我找到了一個好地方有非常足夠的空間
那就是新手頻道功能的各種提示字符串 只要確保這些功能無法被任何方法使用 那他就不會導致任何問題
你可以使用WinHex把原來的道具種類拷貝到這裡 然後再依序寫入五個新的道具種類名稱(記得他們總是以00結尾 表示字符串結束)
因為原先的道具種類不是全都等長的字符串 所以每個道具種類的字符串地址並不是固定+4byte 為了更快速的回寫地址參考建議使用任何程式語言編寫計算新的字符串對應地址 然後回寫到程式文件


asc.png
asc.png (250.13 KiB) 已瀏覽 872 次
good.png
good.png (333.75 KiB) 已瀏覽 872 次
move.png
move.png (354.11 KiB) 已瀏覽 872 次

總結修改方案:
搜索83 FA 37 77 61 將37改成3C 這樣就可以使用60道具種類
搜索 8B 04 95 00 FB 61 00 將00 FB 61 00改為F8 F9 61 00 註記: 對應地址0061F9F8 (0x21e1f8)
Ctrl+G 0x21e1f8 寫入60個道具種類字串的參考地址
Ctrl+G 0x211288 依序寫入60個道具種類字串 每個都要以00結束
到這裡就大功告成啦
為了方便測試可以進入http://127.0.0.1/adminer.php
選擇tbl_item 來修改身上的道具Type值 為56~60 進到遊戲可以發現能正常支持道具寵物項圈 寵物飾品 寵物服裝 寵物裝甲 寵物晶石道具種類名稱啦


1.jpg
1.jpg (293.24 KiB) 已瀏覽 871 次
2.jpg
2.jpg (290.18 KiB) 已瀏覽 871 次
3.jpg
3.jpg (291.49 KiB) 已瀏覽 871 次
4.jpg
4.jpg (291.59 KiB) 已瀏覽 871 次
5.jpg
5.jpg (290.5 KiB) 已瀏覽 871 次
回覆文章