[TIL] 如何使用 hex editor (二進位制編輯器)修改遊戲存檔

AlanZhang發表於2023-01-17

僅針對沒有進行過特別混淆/加密的二進位制格式存檔。我的使用場景中特指 unity 遊戲的 bin 存檔檔案。

vscode 有個 extension 叫 hex editor,或者用其他的編輯器也一樣能做到。

在遊戲沒有進行特別混淆的的情況下這種方式能很輕鬆修改存檔,對付一些沒有現成修改器小眾遊戲很方便。當然如果能用 CE 之類的記憶體修改器也很好,但我是在 linux 中用 wine 跑的遊戲,估計想用 CE 還要好一番折騰,加上 vscode 是現成的不用裝任何東西,於是就先這麼搞了。

以修改金幣為例,方法和 CE 很像:

  1. 找到存檔檔案,備份一份
  2. 進遊戲消費,用盡可能少的操作讓金幣數變化,存檔
  3. 找到新存檔和備份的存檔差異點
  4. 修改差異點,進遊戲確認存檔金幣數是否有變化,沒變就換下一個差異點修改

因為操作很小,存檔檔案變化不大,我們通常不需要像記憶體修改一樣多次改變金幣數縮小範圍,改一次就夠了。

第3點中,如何對比二進位制有很多工具可以用。但最方便的還是自帶的 diff 配合 xxd(我是 ubuntu 22.10):

diff -y <(xxd save1.bin) <(xxd save2.bin)

為了看的舒服一點,可以裝個 colordiff,用法是一樣的:

colordiff -y <(xxd save1.bin) <(xxd save2.bin)

找到變化了的地址後,去 vscode 用 hex editor 改就行了。

第4點中,如果有哪個差異點的地址的某種表達形式,直接就是你的金幣數量,那就算運氣比較好。不然就慢慢試,就我的體驗來說也很快。

相關文章