你提供的金手指代码修改主要是通过改变寄存器使用和偏移量计算方式来避免地址冲突。以下是具体分析:
寄存器变更:
原版使用A寄存器(780A/640A)
修改版改用F寄存器(780F/640F)
这样做可以避免多个金手指同时运行时寄存器数值被覆盖
偏移量计算简化:
原版780A0000 00000160 + 640A01F0 = 最终地址偏移 0x160+0x1F0=0x350
修改版780F0000 00000160 + 640F0000 = 直接使用 0x160 偏移
实际上修改后可能更准确命中目标地址,避免了累加偏移导致的误差
内存写入指令优化:
原版640A01F0 表示:在寄存器A地址 + 0x1F0处写入
修改版640F0000 表示:直接在寄存器F地址写入
这种修改消除了二次偏移可能造成的地址错误
建议同步修改其他功能:
如果要保持三个金手指同时生效,建议将其他两个也改为相同模式:
bash
复制
[02# 无限耐力]
580F0000 0338CA50
580F1000 00000020
580F1000 00000000
780F0000 00000178 # 偏移量改为原版0x178
640F0000 00000000 00000000
[03# 无限魔法]
580F0000 0338CA50
580F1000 00000020
580F1000 00000000
780F0000 0000016C # 偏移量改为原版0x16C
640F0000 00000000 00000000
这种修改本质上是通过统一寄存器的使用,避免多个金手指同时操作时发生寄存器状态冲突,从而使多个修改可以共存生效。核心原理是保证每个金手指代码的地址计算路径相互独立。