头图

仅针对没有进行过特别混淆/加密的二进制格式存档。我的使用场景中特指 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点中,如果有哪个差异点的地址的某种表达形式,直接就是你的金币数量,那就算运气比较好。不然就慢慢试,就我的体验来说也很快。


AlanZhang
2.5k 声望55 粉丝

有趣一点