【问题标题】:Modify game settings in binary file修改二进制文件中的游戏设置
【发布时间】:2011-10-03 14:10:53
【问题描述】:

(我在 Gaming 上问过这个问题,但被关闭了,有人建议我在 Stackoverflow 上提问。如果这不适合这里,请在关闭之前建议一个更好的地方。谢谢。)

在游戏中作弊的一种常用方法是使用内存扫描工具来追踪您想要更改的值。然而,另一种常见的作弊方法是修改二进制文件。

例如,在游戏中,当你杀死一个敌人时,你会得到+5 exp,通过将存储在二进制中的 5 更改为 50,你可以得到 +50 exp。据我所知,很多 iPhone 游戏作弊都是这样工作的,这需要你修补二进制文件或使用 HEX 编辑器。

我对那些黑客如何定位设置感兴趣。 找出特定值在哪个二进制文件中以及对应的偏移量的一般方法/工具是什么?如果是非常唯一的数字或ascii字符串,如3219google.com,你可以只搜索 HEX 值,但如果它是一个常见的值,比如 1 怎么办?

【问题讨论】:

    标签: assembly binary hex


    【解决方案1】:

    您可以反汇编游戏可执行文件,这样您原则上就可以知道每个内存位置的作用。这对于大多数游戏来说可能并不实用。

    另外两种更直接针对特定值的方法:

    • 在获得经验之前使用调试器暂停游戏并逐步执行代码以查看受影响的内存位置。
    • 虽然肯定有许多位置包含与您的经验相同的数字,但您可以快速缩小范围:假设您有 50 EXP,转储包含 50 的所有内存位置*的列表,然后获得更多 EXP(例如 20 ) 现在您可以排除所有未更改为 70 的位置。

    * 您可能会搜索 32/64 位整数而不是单字节位置。

    【讨论】:

    • 那将是我一开始提到的内存扫描工具。我知道如何在内存中追踪地址。但我真正想要的是修改二进制文件而不是内存中加载的值。
    • 抱歉,误读了。但是您可以使用完全相同的技术:保存游戏,获得经验,再次保存,与旧的保存游戏比较(差异),看看有什么变化。
    • 当您找到该内存位置以及当时正在执行的代码时,您可以向后处理二进制文件以找到该指令序列或偏移量。二进制文件可能被压缩或加密,但您必须一步一步地找到位置和/或代码。另请注意,值可能会保留在寄存器中,并且可能直到一段时间后才会被驱逐到内存中,尤其是如果它被打印在某个地方,比如说他们计算 +20,然后进入一些代码以在屏幕上打印新分数并保存该值在寄存器中,然后在显示后将其驱逐到内存中。
    • 我得到动作回放闪回:)
    【解决方案2】:

    尝试通过反复试验找出文件格式。程序员通常不会故意让事情变得困难,除非游戏是 MMO 或容易作弊的大片。如果您正在玩一款能够获得 Exp 来杀死蛞蝓的游戏,那么您可以采取以下一些基本步骤:

    1. 找到“Monster”文件或数据库表。这包含所有怪物的信息。
    2. 搜索一些已知信息。在这种情况下,怪物的名字是“Slug”。
    3. 使用十六进制编辑器检查怪物名称附近的字节。查找包含值“50”的 DWORD、WORD 或 BYTE。
    4. 将 50 更改为 51 并保存更改。杀死一个“蛞蝓”,看看 exp 是否改变了。
    5. 如果您仍然获得 50 exp,请尝试“Slug”附近的其他值并重复。

    只要有足够的时间和耐心,您最终会弄清楚整个文件格式并能够随意更改任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 2014-11-28
      • 2017-01-25
      • 1970-01-01
      • 2011-08-07
      • 2014-04-16
      相关资源
      最近更新 更多