【问题标题】:asm / cheat engine - causing crash in game when moving memoryasm / 作弊引擎 - 移动内存时导致游戏崩溃
【发布时间】:2019-06-25 01:42:45
【问题描述】:

我想将内存地址的值或值本身移动到 R9 寄存器中,为此我一直在使用作弊引擎中的 AOB 注入来帮助我进行测试。每次尝试都会导致崩溃。

我尝试将值直接发送到 R9 寄存器 (mov r9, DECIMALVALUE) 或通过十六进制发送,或者发送十进制或十六进制的内存地址 (mov r9, [DECIMALMEMORYADDRESS])

我的最新尝试:

  mov rax, 2981737325408
  mov r9, rax

原代码:

  mov r9, [r8]

预期的结果是不会发生崩溃,并且每次加载时都会成功地将内存地址的值发送到 r9 寄存器或将内存地址本身成功发送到寄存器。只有当我在游戏中生成时才会调用此指令。

【问题讨论】:

  • x86 指令是可变长度的。 mov r9, VAL 是 10 个字节,而 mov r9, [r8] 是 3 个字节。因此,您可能正在覆盖后续指令。 (由于我不知道 AOB 注入是什么,我可能完全错了。)
  • 您希望软件在加载后对 r9 中的值做什么?
  • 为什么要销毁 RAX,而不是直接使用 mov r9, 2981737325408 将 64 位立即数常量放入 R9?

标签: assembly 64-bit intel cheat-engine


【解决方案1】:

如果您只是使用作弊引擎反汇编程序的“汇编代码”选项覆盖汇编指令,那么您应该直接将硬编码地址移入 r9。 RAX, r9 都是通用寄存器所以没关系。

mov r9, 2981737325408

如果您只是覆盖代码,那么您的指令的问题在于您正在破坏 RAX 中的值。或者你可以这样做

推拉克斯 mov rax, 2981737325408 mov r9, rax 流行拉克斯

如果您使用的是作弊引擎 AOB 注入模板,则该模板实际上是一个钩子,但它对您来说有点抽象。但即使在这种情况下,您也只需要执行 1 指令,将您的值移入 r9

【讨论】:

    猜你喜欢
    • 2013-03-03
    • 2022-10-24
    • 2021-07-28
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多