如何寻找静态指针地址的替代方案?解决游戏重启后指针地址变更问题
Cheat Engine动态指针与AoB注入问题解答
思路正确性判断
你的思路完全正确。这段汇编指令mov rdi, [rax + r13*8 + 28]的本质就是通过rax、r13两个寄存器的值加上固定偏移28来计算目标值的内存地址。只要能稳定获取游戏启动或角色死亡后这两个寄存器的有效值,就能通过公式直接算出目标地址,不用每次手动重新查找指针。
实操建议(适合无编程背景)
不用碰复杂的DLL注入,直接用Cheat Engine自带功能就能解决:
- 用AoB扫描锁定代码位置:游戏的程序代码段是固定的,每次启动后这段指令的相对偏移不会变。打开CE的AoB扫描,输入指令对应的机器码
48 8B 7C C0 28(对应你给出的汇编指令,CE会自动匹配细微差异),扫描后就能定位到这段代码的固定位置。 - 添加代码钩子自动计算地址:右键扫描到的代码,选择「自动汇编」→「新建」,写入一段简单的钩子代码,让它在原指令执行时自动计算并保存目标地址:
保存为CT表,下次启动游戏加载该CT表,就能直接通过// 保存原寄存器值,避免破坏游戏逻辑 push rax push r13 // 计算目标地址并存入CE全局变量 mov [MyTargetAddr], rax mov rcx, r13 shl rcx, 3 // 等价于r13*8 add [MyTargetAddr], rcx add [MyTargetAddr], 28 // 恢复寄存器,执行原指令 pop r13 pop rax mov rdi, [rax + r13*8 + 28]MyTargetAddr这个变量访问目标值。 - 简化操作:直接用指针追踪:如果不想写汇编,也可以在找到这段代码后,用CE的「指针扫描」功能,以
rax为基址,添加r13*8 +28作为多级偏移,生成稳定的指针模板。
内容的提问来源于stack exchange,提问作者littlebear
相关产品推荐
相关产品推荐

