愛玩電腦遊戲的人應該都知道有一款知名的應用軟體叫做「遊戲修改大師(Game Master)」,它可以直接搜尋指定行程(process)的某個有著特定用途的記憶體位址(例如儲存角色所持金錢的記憶體位址),並且直接對該記憶體位址中的資料進行修改與鎖定。簡單來說,遊戲修改大師可以讓玩家的金錢、資源都變成無限的,等級、能力值也可以調整到最高。不過,遊戲修改大師是運行在Windows作業系統上的軟體,並不能直接在Linux作業系統上使用,那麼在Linux作業系統上玩遊戲時,要怎麼樣才能對遊戲進行這類的修改呢?



scanmem

scanmem是一個開源專案,它可以進行如遊戲修改大師那樣的記憶體搜尋、修改和鎖定功能。

https://github.com/scanmem/scanmem

scanmem本身有命令列介面(CLI),不過也有提供具圖形使用者介面(GUI)的應用程式──GameConqueror。

安裝 GameConqueror

GameConqueror的安裝可以到scanmem的GitHub倉庫上,下載專案原始碼回來自行編譯並安裝。如果是使用Debian或是基於Debian的Linux發行版,可以直接執行以下指令來安裝GameConqueror:

sudo apt install gameconqueror

使用 GameConqueror

首先執行想要進行修改的遊戲。以OpenRA為例。

gameconqueror

接著執行GameConqueror。

gameconqueror

按下No process selected左邊的按鈕,搜尋並選擇要進行修改的遊戲的行程。

gameconqueror

假設我們要讓自己擁有用不完的錢,可以先將目前持有的錢輸入至GameConqueror的搜尋列中,並且進行搜尋。如下圖,由於目前的錢是2500,所以輸入2500

gameconqueror

接著會在左上角的清單看到一堆記憶體位址,我們要在遊戲中改變金錢的值,並繼續搜尋,直到篩選到剩下1個或數個值總是相同的記憶體位址。如下圖,將錢花到剩下2200之後,再搜尋2200,此時只會剩下兩個記憶體位址。

gameconqueror

將左上方清單的所有項目都加到下方清單中。

gameconqueror

接著修改下方清單記憶體位址的值,並且將Lock欄位勾選,讓值被改變之後可以很快地再被修改回我們設定的值。

gameconqueror

如下圖,此時在OpenRA中就有用不完的錢了!

gameconqueror