仅针对没有进行过特别混淆/加密的二进制格式存档。我的使用场景中特指 unity 游戏的 bin 存档文件。
vscode 有个 extension 叫 hex editor,或者用其他的编辑器也一样能做到。
在游戏没有进行特别混淆的的情况下这种方式能很轻松修改存档,对付一些没有现成修改器小众游戏很方便。当然如果能用 CE 之类的内存修改器也很好,但我是在 linux 中用 wine 跑的游戏,估计想用 CE 还要好一番折腾,加上 vscode 是现成的不用装任何东西,于是就先这么搞了。
以修改金币为例,方法和 CE 很像:
- 找到存档文件,备份一份
- 进游戏消费,用尽可能少的操作让金币数变化,存档
- 找到新存档和备份的存档差异点
- 修改差异点,进游戏确认存档金币数是否有变化,没变就换下一个差异点修改
因为操作很小,存档文件变化不大,我们通常不需要像内存修改一样多次改变金币数缩小范围,改一次就够了。
第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点中,如果有哪个差异点的地址的某种表达形式,直接就是你的金币数量,那就算运气比较好。不然就慢慢试,就我的体验来说也很快。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。