2008年4月2日 星期三

淺談 WOW Memory Edit

常見的遊戲記憶體修改有幾種方式

1. trainer

由hacker寫好的針對目標程式所使用的 .exe 執行檔,使用上通常蠻簡單,按個鍵就可以完成特定的功能...
由於是可執行檔,因此使用上有很大的風險,有可能會被插木馬或是病毒等等,當執行程式時,你很難知道除了修改的功能完成之外是不是也一併偷偷的幫你把電腦的大門開啟...

2. memory editor

記憶體編輯工具,通常也包含資料搜尋的功能,讓使用者可以找出想要修改的位址,有的工具也提供除錯,設定中斷點,反組譯程式碼的功能,方便分析修改,甚至可以幫助你產生修改外掛執行檔(Trainer)...

功能強大,但較適合進階的玩家,因為所有的修改資料都要自己從頭找起,找到後如何修改也是門學問;各大遊戲的駭客討論區較常出現的修改資訊大多也是某個較關鍵的記憶體位址,這些資訊很容易就可以讓有經驗的修改玩家直接拿來套用,由於修改資訊內容透明,因使用來修改遊戲時而遭受入侵的風險較小 ...
( 但是記憶體編輯工具也是執行檔,不排除下載回來的記憶體工具本身就包含木馬病毒 .... )

這類型的工具很多,從DOS時期的整人專家,FPE,GameIce,GameMaster,TrainerMaker,GameHack,GameWiz,TSearch...等等,目前較熱門用來修改 WOW 的工具為 Cheat Engine

3. Debug Tools

除錯器本來是用在程式開發除錯,但由於功能實在是太強大,不只修改遊戲,破解程式,安全漏洞的開發調用都需要用到他;使用上與記憶體修改工具相同的地方是,你必需要知道如何找到要修改的地方,以及如何修改,使用這樣的工具才有意義;較適合程式開發人員,瞭解組合語言及反組譯程式碼的能力,對作業系統有一定的掌握能力,才能夠輕鬆的駕馭這樣的工具...
常見的工具為 Softice,TRW2000,OllyDBG,W32DASM ...


WOW 可以使用記憶體修改 ?

這要追溯到B社早期的一個大作 Diablo , 雖然他是單機遊戲,但他提供了 Battle.net 連線功能
而且在遊戲中並未完整的保護好玩家角色資料,因此只要直接修改記憶體,各種神奇的能力就出來了..
地圖全開,無敵,單擊百萬傷害,穿牆,城鎮內殺人,那段時期我們稱之為史上最大作弊戰爭...

若干年後的 WOW , B社當然不會允許這樣的情況發生,因此加入了相當多的檢查機制,來防止遊戲中的作弊行為一般稱之為 warden , 傳言這東東會在不明的時間點進行檢查,行程中是否有在黑名單上的"工具程式"進駐,
在玩家電腦中的程式碼,遊戲數據資料是否有異常的變動...等等,一旦發現了有違反他檢查原則的地方,就自動切斷與伺服器的連線,並停用帳號...

但我個人惡搞研究後的心得是, warden 比較可能是建立在伺服器端,當玩家直接修改了本機記憶體內的數值後,一但數值傳到伺服器端,馬上就現出原形,立刻斷線,並被列入班(BAN)的好友名單之中...

但是如果是在私服上使用同樣的修改,你改到翻過去也不會被斷線,因此我一直認為這些檢查機制是在伺服器端做的...

但就是表示記 WOW 的記憶體是完全不能修改? 答案是不一定...

如果只是單純的讀取記憶體中的數值資料,我想應該是不會有問題 , 但是如果要修改數值資料 , 這時可分成兩個部份..

1. 極為敏感的數據資料 (層層保護) : 像是玩家角色的屬性數值,錢,生命,法力,傷害...等等

其實玩家的真正資料應該是要存在伺服器上才對,所以修改玩家本機電腦上的數值,一旦送出去伺服器端,一比對就會有出入...這部份的運算我認為應該也是在伺服器端,使用者端電腦內的數值只是方便即時運算使用,直接修改可能不會有效果...(另一種說法是運算還是在使用者端的電腦上,只是傳輸出去的數值會包含檢查標記,只有正確且合法的數值伺服器才會採用)

2. 較不敏感的數據資料(不被保護),例如像是使用者端的顯示設定,不同陣營語言設定...

這一類型的資料純粹為使用者端這邊使用,所以不需要再傳回到伺服器端,所以理論上你怎麼修改,伺服器端都不會知道但前提是數值應該要在合理範圍內,這邊用戶端程式應該會去做控管及檢查,所以如果要修改這類型的數值,有可能還要一併修改檢查的程式碼,把他的查驗機制拿掉,如此才能夠正確的修改 (範例: 空照 , 敵對陣營說話的內容 ...等等)


好吧,不能隨意修改的 WOW 記憶體我們可能拿來幹嘛? 讀取那些狀態數值可以做甚?...

答案就是開發自動外掛機器人(BOT)

目前常見的幾款 WOW 自動外掛機器人本身都內建存取 WOW 記憶體的能力...

因為像角色所有的資料都存在記憶體中,BOT可以先從記憶體中取得角色的 x,y,z 座標,然後送出 "Tab" 鍵給遊戲程式讓角色來選取最近的怪物(TARGET), 此時BOT再去記憶體中取得目標怪物的坐標位置,就可以操控角色移動到怪物的位置去打怪了...

除了自動種田,自動釣魚,自動拍賣等等各種應用都可以自行開發,這也是目前較安全且有用的 memory hack 應用...

沒有留言: