热血江湖1.4版的穿墙研究

    技术2022-05-11  707

    1.4版由于加入了寻路算法,原来的穿墙方法不适用。下面交流一下我修改的经验: 一般步骤,同样用OD载入Client.exe,Ctrl+G定位到0043D3BA: 0043D3BA   |.  50                            push eax                                    ; |Arg2 0043D3BB   |.  51                            push ecx                                    ; |Arg1 0043D3BC   |.  8B0D F8D72301     mov ecx,dword ptr ds:[123D7F8]              ; | 0043D3C2       E8 29EC0600          call client.004ABFF0                        ;  //这个函数实现寻路算法 0043D3C7       8D55 D4                 lea edx,dword ptr ss:[ebp-2C] 0043D3CA       56                           push esi 0043D3CB       52                           push edx 0043D3CC   |.  8BCB                     mov ecx,ebx                                 ; | 0043D3CE   |.  E8 7D920000          call client.00446650                        ; //这个函数是动作样式 0043D3D3       84C0                       test al,al       ; //紧接上面函数的传回值进行比较 0043D3D5       0F84 35210000     je client.0043F510                          ; //判断是否需要移动ZF=0则跳走,不移动 0043D3DB   |.  D945 F0                fld dword ptr ss:[ebp-10] 0043D3DE   |.  D865 DC               fsub dword ptr ss:[ebp-24] 0043D3E1   |.  D945 E8                 fld dword ptr ss:[ebp-18]

    基本思路是只要屏蔽寻路就行了,同样,把0043D3C2这个CALL用NOP填充。修改0043D3D5这行的test al,al为cmp al,01 。这样使比较结果不会为0。如此,简单两步实现穿墙。这里还有个有趣的现象,把0043D3D3这个CALL也NOP填充掉会如何,人物跑步动画停不下来了!这个问题原先可难住了我好久,因为我原先以为这个CALL是寻路算法的,结果不是。。。。。。花了不少冤枉时间。UtrlEdit可以搜索E829EC0600字符串,找到后全部替换成90.再往下搜索84C0替换成3C01


    最新回复(0)