assembly - 修改二进制文件中的游戏设置

标签 assembly binary hex

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

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

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

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

最佳答案

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

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

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

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

    关于assembly - 修改二进制文件中的游戏设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6664048/

    相关文章:

    macos - OSX 64 位上的 NASM 问题

    assembly - 使用程序集访问硬盘驱动器

    Python - 将二进制解码为 boolean 值

    java - 在 Java 中,我想获取一个表示十六进制的字符串并将其转换为一个 int,同时保留 "0x"前缀

    c - 是否有将整数转换为十六进制或二进制的 C 库?

    基于 c 中的 EBP 从堆栈帧调用函数及其参数

    assembly - 什么是好的 64 位 NASM 汇编引用?

    perl - 从 bin 文件中读取一个空终止字符串

    c - 为什么 fwrite 不适用于 C 中的二进制文件?

    Java快速访问数组项