零之轨迹吧 关注:40,958贴子:930,015

回复:【辛苦大放送】零之轨迹遗漏宝箱回收器

取消只看楼主收藏回复

游戏里切换场景后,CE里监视出寄存器状态



82楼2012-05-17 10:46
回复
    之后要做的事就非常明显了,把原代码
    008F3C8E - 74 24 - je 008f3cb4
    008F3C90 - d9 85 6c ff ff ff - fld dword ptr [ebp-00000094]
    008F3C96 - d9 45 84 - fld dword ptr [ebp-7c]
    008F3C99 - de d9 - fcompp
    008F3C9B - df e0 - fnstsw ax
    008F3C9D - f6 c4 05 - test ah,05
    008F3CA0 - 7b 12 - jnp 008f3cb4
    替换为
    008F3E7A - d9 85 6c ff ff ff - fld dword ptr [ebp-00000094]
    008F3E80 - d9 45 84 - fld dword ptr [ebp-7c]
    008F3E83 - de d9 - fcompp
    008F3E85 - df e0 - fnstsw ax
    008F3E87 - f6 c4 05 - test ah,05
    008F3E8A - b8 20 00 0a 02 - mov eax,020a0020
    008F3E8F - bb 00 00 00 00 - mov ebx,00000000
    008F3E94 - b9 48 8e 02 00 - mov ecx,00028e48
    008F3E99 - ba 00 00 80 3f - mov edx,3f800000
    008F3E9E - be 68 e0 0a 02 - mov esi,020ae068
    008F3EA3 - bf 40 df 0a 02 - mov edi,020adf40


    83楼2012-05-17 10:48
    回复
      2026-08-01 10:44:56
      广告
      不感兴趣
      开通SVIP免广告
      一旦这样替换之后,游戏里就会无限循环自动切换场景,而无法在切换场景之后就停止切换。所以需要在切换场景之后把新代码又替换为原代码。但如何判断切换场景什么时候完成?固然可以在替换为自动切换场景代码后延迟个若干秒钟换回原代码,也可以手动的执行替换为原代码的操作,但这些方法都不准确不方便而且必然会造成多次切换场景浪费时间。科学的方法是在自动切换场景代码被执行后(注意不是被替换而被执行,在内存里替换代码是瞬间完成的,但游戏窗口最小化时是暂停执行的)在内存里做一个切换完成的标记,换回原始代码的程序则循环读取这个标记,一旦发现执行完毕,就立刻把新代码换回原始代码。


      84楼2012-05-17 11:00
      回复
        所以新代码后面加上一句
        008F3EA8 - c7 05 f0 8e 6d 10 ef cd ab 00 - mov [106d8ef0],00abcdef
        就可以在执行完切换场景操作之后把成功标志修改为abcdef
        在本软件点击自动瞬移后,可以手动取消(取消就是换回原始代码),或者切换到游戏窗口发生自动切换场景,并使成功标志修改为abcdef 。这时本软件将自动进行取消操作换回原始代码,保证切换场景不被重复执行。


        85楼2012-05-17 11:04
        回复
          在实现自动切换场景之后,我又发现自动切换的代码只有离出入口比较近的情况下(大概在三、四个身位左右)才会执行。所以我又继续向上摸索,找出了在任意位置还是在出入口附近的分支判断点,地址是008F3B5A,摸索的方法和摸索自动切换基本类似,这里就不赘述了。


          86楼2012-05-17 11:10
          回复
            以上三处地址在软件中可以自行设置,也可以用内存搜索功能根据特征码搜索。特征码一般就是待替换的原始代码,但也可能更多一些,因为原始代码较短可能会重复出现不具有唯一性。

            


            87楼2012-05-17 11:14
            回复
              我还是公布一下三处的特征代码、原始代码和替换代码吧,本来这些应该加入软件的设置界面里的。


              88楼2012-05-17 11:15
              回复
                特征代码:89 91 84 4E 00 00 8B 45 F8 8B 08 8B 55 0C 89 91 88 4E 00 00
                原始代码:89 91 84 4E 00 00 8B 45 F8 8B 08 8B 55 0C 89 91 88 4E 00 00
                替换代码:BA ?? ?? ?? ?? 89 91 84 4E 00 00 8B 45 F8 8B 08 8B 55 0C BA ?? ?? ?? ?? 89 91 88 4E 00 00


                89楼2012-05-17 11:16
                回复
                  2026-08-01 10:38:56
                  广告
                  不感兴趣
                  开通SVIP免广告
                  特征代码:74 24 D9 85 6C FF FF FF D9 45 84 DE D9 DF E0 F6 C4 05 7B 12 D9 85 54 FF FF FF D9 45 84 DE D9 DF E0 F6 C4 41 75 02 EB 07 C6 85 43 FF FF FF 01 0F B6 85 43 FF FF FF 85 C0 0F 84 A6 00 00 00
                  原始代码:74 24 D9 85 6C FF FF FF D9 45 84 DE D9 DF E0 F6 C4 05 7B 12
                  替换代码:D9 85 6C FF FF FF D9 45 84 DE D9 DF E0 F6 C4 05 B8 20 00 0A 02 BB 00 00 00 00 B9 48 8E 02 00 BA 00 00 80 3F BE 68 E0 0A 02 BF 40 DF 0A 02 C7 05 ?? ?? ?? ?? EF CD AB 00


                  90楼2012-05-17 11:17
                  回复
                    特征代码:8B 85 10 FF FF FF D9 40 10 DE D9 DF E0 F6 C4 05
                    原始代码:8B 85 10 FF FF FF D9 40 10 DE D9 DF E0 F6 C4 05
                    替换代码:8B 85 10 FF FF FF D9 40 10 DE D9 DF E0 F6 C4 05 B8 20 01 1C 13 BB 00 00 00 00 B9 00 00 00 00 BA 00 00 80 3F BE 68 E0 0A 02 BF 40 DF 0A 02


                    91楼2012-05-17 11:18
                    回复
                      -92
                      -93
                      -94
                      -95
                      -96
                      -97
                      -98
                      谢谢支持


                      99楼2012-05-18 09:25
                      回复
                        我在网上找到的PSP零轨瞬移的金手指代码:
                        _S NPJH-50311
                        _G 零之轨迹
                        _C0 地图瞬移代码-by 执行者NO.X
                        _C0 克洛斯贝尔中央广场
                        _L 0x0045CA15 0x00000010
                        _L 0x1045CA16 0x00002130
                        _L 0x0045CA18 0x00000064
                        _L 0x0045CA20 0x00000004
                        PSP的地址[0045CA15]的4字节数值对应PC的地址[106D8EE1]的1字节数值,也就是本软件的【场景代码】的第5第6个数字
                        PSP的地址[0045CA16]的4字节数值对应PC的地址[106D8EE2]的2字节数值,也就是本软件的【场景代码】的第1第2第3第4个数字
                        PSP的地址[0045CA18]的4字节数值对应PC的地址[106D8EE4]的4字节数值,也就是本软件的【出入口代码】
                        PSP的地址[0045CA20]的4字节数值对应PC的地址[106D8EEC]的1字节数值,本软件中没有使用到。


                        110楼2012-05-22 20:41
                        回复
                          由于没有用到PSP的地址[0045CA20]的数值也能实现瞬移,所以我认为PSP金手指代码即使去掉对地址[0045CA20]的修改也能实现。改成:
                          _S NPJH-50311
                          _G 零之轨迹
                          _C0 地图瞬移代码-by 执行者NO.X
                          _C0 克洛斯贝尔中央广场
                          _L 0x0045CA15 0x00000010
                          _L 0x1045CA16 0x00002130
                          _L 0x0045CA18 0x00000064
                          就行。
                          先用本软件查出宝箱所在的【场景代码】和【出入口代码】(就是选中宝箱后显示的【目标场景代码】和【目标出入口代码】)。然后把金手指[0045CA15]后的数值替换成【场景代码】的第5第6个数字;把[1045CA16]后的数值替换成【场景代码】的第1第2第3第4个数字;把[0045CA18]后的数值替换成【出入口代码】。用修改后的金手指,然后在PSP游戏中手动的切换场景,就能瞬移到离宝箱最近场景和最近的出入口。


                          111楼2012-05-22 20:49
                          回复
                            -101
                            -102
                            -103
                            -104
                            -105
                            -106
                            -107
                            -108
                            -109
                            谢谢支持,深入探讨什么的可以发站内消息


                            112楼2012-05-22 20:53
                            回复
                              2026-08-01 10:32:56
                              广告
                              不感兴趣
                              开通SVIP免广告
                              好吧,刚才在参考贴里发现了PC的地址[106D8EEC]是自动生成的地点名称代码,因为会自动生成所以不用修改,这样也确认了PSP金手指可以去掉对地址[0045CA20]的修改,因为该地址的数值会自动生成。


                              113楼2012-05-22 21:09
                              回复