热血江湖1.4版的穿墙研究

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值