冰楓論壇
標題:
楓之谷代碼分析 找出想要的功能&寫出想要的數據
[打印本頁]
作者:
604759123
時間:
昨天 23:57
標題:
楓之谷代碼分析 找出想要的功能&寫出想要的數據
本帖最後由 604759123 於 2026-9-2 00:19 編輯
前言
各位壇友們好
近期古早味的楓之谷熱潮再現,除了Artale還有經典服
就想回味一下古早的功能是怎麼搞
最近開始重新探險,較少看到代碼查找攻略又或者是已經消失
因此結合網上有人分享過加自己研究的內容,做一個紀錄分享,也希望有興趣研究的朋友們一起耍
有些東西可能不是正確或有更好的做法,若有大佬看到也請不吝指點
(不好意思原本有附圖片,但文章內要進行上傳壓縮才能貼出來,我會再整理重新貼上,後續可能也考慮用影片比較適合)
--
環境說明
首先,因為主要的目的及體驗是找出功能及修改的樂趣,我只使用私服測試
第一、沒研究Anti-cheat相關的內容,第二、能使用私服GM指令可以輔助很多
當然其思路在對應的相關版本應該是通用的
感謝各位前人的傳承,以及後續開發私服、登入器的大佬們,讓小弟有機會能踏上這時空之旅
環境&工具如下:
CE(Cheat Engine) @dark Byte
https://github.com/cheat-engine/cheat-engine
(必備工具,在使用下列的相同環境下,不用搞成UCE,大概只要改成VEH debugger,之後會研究下用x32dbg, ghidra來輔助找些花樣)
TWMS CEM @冰楓
https://bingfong.com/thread-6812-1-1.html
(想測試或比較不同的數據功能,可以參考不同版本)
TWMSv113伺服器 @D363N6UY
https://github.com/D363N6UY/MapleStory-v113-Server-Eimulator
(自己開服用的工具,內容算很純淨,版本則是因為跟古老反盾、狂狼反盾接近,商業私服也很多,適合拿來研究修改)
TWMSv113~v194登入器 @zhyon
https://github.com/zhyonc/TMSLauncher
(這個登入器很重要,移除了HS、移除CRC校驗...等等反作弊的內容,用這款可以減少很多挫折)
代碼功能及數據方面,要感謝的太多了,列不完…
--
指針
基礎的CE操作的話,因為已經有很多教學,不太多贅述
但在找功能上,因為工具的更新,有些找法可以精簡些
先來找個簡單的,人物座標x方向開始搞起,這裡先打詳細一點,其他都可以以此類推
人物座標:
1. 使用CE搜尋未知的值、變動的值
2. 透過左右走、原地不動,來找出放x值的地址
3. 剩下過濾完的地址,可以看出x往右是+,往左是-
4. 找到x值的儲存地址後(可能會有多個,多切換地圖,可以過濾掉剩下幾個,加入到地址列表,
右鍵看下"找誰訪問(Find out what accesse this address[F5])"、"找誰改寫Find out what writes this address[F6]",確認結尾偏移值
5. 加入到代碼列表後,右鍵Generate pointermap,保存
6. 重開遊戲,再找一次儲存x值的地址,右鍵選擇Pointer Scan,並使用剛才儲存的地址做比較
(重開時的小技巧,記住幾個地圖傳送後的值,重開後直接搜尋這些值就好)
7. 如果還有很多地址,可以使用工具列右邊的Rescan指定結尾的偏移值,或多做幾次儲存再比較
8. 將剩下的指針都雙擊放入代碼列表,重開遊戲、換頻可以找到最後剩下唯一的(也可能還有數個)
9. 通常Y座標位於X座標的偏移+4*n/-4*n,試了一下發現是+4,因此也獲取了Y的指針
牆壁座標:
1. 因為我們有了人物座標,可以使用人物走到最左跟最右邊,來大概推測牆壁X左值、右值
2. 走到最左邊,直接搜尋人物此時X座標範圍值,最右同理
(info: 我原本是用範圍去抓,後來發現值跟人能走到的位置相同。此牆壁的值可以限制新產生的怪物座標)
滑鼠座標:
1. 根據人物的左-右+,推測滑鼠也是,很快能找到
人物狀態:
1. 切換人物左右、爬梯、跳躍、趴下,使用變動的值可以找到儲存地址,一樣使用Pointer scan能快速找出基址+偏移
(找到人物狀態後,可以使用Memory View->Tool->Dissect structure,看出一些其他功能的端倪)
(info: 面左5/左走3/左爬繩11/右爬繩10/左趴B/左跳(含被撞)7/游泳左D/墓碑左13
右邊等於左-1 ex:面右=4)
喘氣狀態(停止呼吸):
1. 利用攻擊後、被攻擊後的狀態,搜尋變動的值可以找到
(info: 5000ms倒數到0)
攻擊次數(攻擊不停):
1. 假設我們不知道一開始沒攻擊的值=0,一樣搜尋未知的值、打幾下、增加的值,可以搜出來
(info: 換地圖可以歸零)
--
指令修改&編寫數據&功能實現
根據歷史代碼及數據來看,早期沒有CRC bypass的時候,大部分是使用硬體斷點改變暫存器或改變Flag來完成功能
後來還有ICS數據的方式,而我們使用的登入器可以好好享受沒有這困擾
攻擊不停:
一樣是Hello world的攻擊不停開始,其實打勾鎖定住指針就能實現,不過我不確定是不是因為私服關係
並且用修改指令方式,可以不用找到基址跟偏移就達到功能了
一開始搜到攻擊次數的值後,因為我們想知道哪邊寫入嘛,直接右鍵"找誰改寫" ,接著攻擊一下,會跳出一條計數1的指令
mov [ecx+08],eax 可以看出把eax內容放進我們找到的地址,剛好上一條很明顯是inc eax,我們可以請他不要+1
昨天 23:54
上傳
下載附件
(17.85 KB)
有幾種作法:
1. 就直接nop掉,用簡單的數據寫入,可以看到數字不會再增加,目前測試還沒有異狀
2. 上面有個判斷可以改寫指令 (把比較值無限大、比較完的跳轉改成跳過計算那行...)
mov eax,[ecx+08] //目前儲存的地址
cmp eax,[ecx+0C] //下斷點可以知道這裡是100(停止攻擊)
jl 0096ED66 //比較結果 小於等於100就跳去inc那行
推敲出代碼前面的邏輯,就比較好操作了
無敵:
我們前面有找出人物狀態,可以利用被撞到時的狀態來下斷,並且是只有傷害時才改寫或訪問到這個位置
可以看到只有一條是被撞到時才出現計數1
查看指令位置可以看到有一條
昨天 23:33
上傳
下載附件
(13.59 KB)
cmp eax,12 //比較是否為墓碑狀態
下面je則是如果是墓碑就跳轉,我們可以先測試有什麼效果
讓他直接跳轉過去,怪物會直接碰不到,原因大概是把你當成墓碑了
昨天 23:51
上傳
下載附件
(259.15 KB)
(這邊有點導果為因的找法...一來是我印象我有看過,二來是找傷害/碰撞判斷比較正規,後續會再研究不同種類的無敵)
撞擊時間(連撞/無敵秒數):
從無敵附近及相關代碼稍微閒晃一下,看到了一個特殊的comment,寫了1500
這不就是撞擊後的冷卻時間嗎?(1500ms,根據喘氣時間大略計算)
直接改成0測試 => 實現連撞
那麼改成其他秒數 => 實現幾秒後無敵 (類似老版本58秒無敵那種效果)
昨天 23:49
上傳
下載附件
(287.79 KB)
MISS連撞:
一樣在附近閒晃,看到-1500,直接狠狠地把它改成0 => 就變成了MISS連撞啦(還沒達成MISS無敵,所以有傷害)
昨天 23:49
上傳
下載附件
(405.38 KB)
--
目前是下班有閒情逸致想到就會開機來搞一下,偶爾搞搞其他遊戲,結果最後也是在玩CE,哈哈
其他再陸續更新,也可能想用影片,或許邊研究邊錄邊說會方便一點,也感謝壇友們或大佬可以分享一些思路提供
不要去打敗黑魔法師了,一起成為黑魔法師吧
作者:
604759123
時間:
8 小時前
卡個位置補充其他功能
歡迎光臨 冰楓論壇 (https://bingfong.com/)
Powered by 冰楓