好友
阅读权限20
听众
最后登录1970-1-1
|
本帖最后由 zhgang908 于 2019-11-24 20:58 编辑
先上一张效果图
首先用ce 找坦克的所在地图位置
为了方便确定坦克的位置,我设置了如下图碍,及找到具体的坐标体第对应点 正中的位置就是24A0
正中的位置就是24A0的八个方向 0# 249f 1#259f 2#25a0 3#25a1 4#24a1 5#23a1 6#23a0 7#239f
方向指示图
ce找出目的地坐标 [[A28884]+564]+30 此处到行进时给出目的地标,到达后置0.
找出谁改写了这个地方的值跟进。找出坦克行进的方向集的call 0042aed0
方向集
进入 找到24a0 周围8个方距离 目的也的距离集(浮点数) call 00427d40
浮点数组
在浮点数上断。发现是 00427E7E处算出的距离
00427E7E |. D95E 08 fstp dword ptr ds:[esi+0x8] ; 算出距离 写出eis+8 距离2 查看浮点数组
ok 着重分析 00427E7E |. D95E 08 fstp dword ptr ds:[esi+0x8]
发现如果周围不能走则此处给出一个较大的值,找到前面的call [edx+0x194]
00427831 |. FF92 94010000 ||call dword ptr ds:[edx+0x194] ; 判断这个点的通断性
如果 返回值 eax=0 就可以给出很的小距离值了 可以达到穿墙的目的
进入00427831 |. FF92 94010000 ||call dword ptr ds:[edx+0x194] ; 判断这个点的通断性
分析及改变返回值就可以达到 穿墙 穿建筑 穿河流
具体变更:
过河改动3处
第一处
原型
006F7E5C . 5E pop esi
006F7E5D . 5D pop ebp
006F7E5E . 5B pop ebx
006F7E5F . 83C4 70 add esp,0x70
006F7E62 . C2 1400 retn 0x14
006F7E65 8B43 44 mov eax,dword ptr ds:[ebx+0x44] ; 地图数组指定单位 +44状态标识 jmp 01d70068
006F7E68 83F8 FF cmp eax,-0x1 ; 不可走 eax=-2 可走eax==ffffffff
006F7E6B 0F84 FC000000 je game.006F7F6D ; 1 可走。这就跳 了 不能走就不跳
006F7E71 . 8B0D FCE0A100 mov ecx,dword ptr ds:[0xA1E0FC]
006F7E77 . 8B3481 mov esi,dword ptr ds:[ecx+eax*4]
006F7E7A . 8A86 7A020000 mov al,byte ptr ds:[esi+0x27A]
修改
006F7E5C . 5E pop esi
006F7E5D . 5D pop ebp
006F7E5E . 5B pop ebx
006F7E5F . 83C4 70 add esp,0x70
006F7E62 . C2 1400 retn 0x14
006F7E65 - E9 FE816701 jmp 01D70068 ; jmp 01d70068
006F7E6A 90 nop
006F7E6B 0F84 FC000000 je game.006F7F6D ;
006F7E71 . 8B0D FCE0A100 mov ecx,dword ptr ds:[0xA1E0FC]
006F7E77 . 8B3481 mov esi,dword ptr ds:[ecx+eax*4]
006F7E7A . 8A86 7A020000 mov al,byte ptr ds:[esi+0x27A]
改 jmp 01d70068
01D70068 B8 FFFFFFFF mov eax,-0x1 此处修改[ebx+0x44] 为-1 代表此处没有围墙
01D7006D 83F8 FF cmp eax,-0x1
01D70070 - E9 F67D98FE jmp game.006F7E6B
01D70075 0000 add byte ptr ds:[eax],al
第二处
原型
006F7F88 .^\7D E3 jge Xgame.006F7F6D
006F7F8A . BF 05000000 mov edi,0x5
006F7F8F .^ EB D5 jmp Xgame.006F7F66
006F7F91 8BB3 E4000000 mov esi,dword ptr ds:[ebx+0xE4] ; 此位置上的建筑指针
006F7F97 > 85F6 test esi,esi ; 0BBB8240
006F7F99 . 0F84 E3040000 je game.006F8482 ; 1可走 如果是建筑这就不跳了
006F7F9F > 3BEE cmp ebp,esi
修改为
006F7F88 .^\7D E3 jge Xgame.006F7F6D
006F7F8A . BF 05000000 mov edi,0x5
006F7F8F .^ EB D5 jmp Xgame.006F7F66
006F7F91 33F6 xor esi,esi ; 此位置上的建筑指针清空
006F7F93 90 nop
006F7F94 90 nop
006F7F95 90 nop
006F7F96 90 nop
006F7F97 > 85F6 test esi,esi ; 0BBB8240
006F7F99 . 0F84 E3040000 je game.006F8482 ; 1可走 如果是建筑这就不跳了
006F7F9F > 3BEE cmp ebp,esi
第三处
原型
006F847C .^\0F85 1DFBFFFF jnz game.006F7F9F
006F8482 > 8A4424 11 mov al,byte ptr ss:[esp+0x11]
006F8486 . 84C0 test al,al
006F8488 . 0F85 98010000 jnz game.006F8626
006F848E 8B83 EC000000 mov eax,dword ptr ds:[ebx+0xEC] ; [ebx+0xEC] 的值是7 建筑 6 边界 2 水 1 可走
006F8494 . 8B95 AC050000 mov edx,dword ptr ss:[ebp+0x5AC]
006F849A . 8D0CC0 lea ecx,dword ptr ds:[eax+eax*8]
006F849D . 8B82 A4050000 mov eax,dword ptr ds:[edx+0x5A4]
修改后
006F847C .^\0F85 1DFBFFFF jnz game.006F7F9F
006F8482 > 8A4424 11 mov al,byte ptr ss:[esp+0x11]
006F8486 . 84C0 test al,al
006F8488 . 0F85 98010000 jnz game.006F8626
006F848E B8 FFFFFFFF mov eax,-0x1 ; [ebx+0xEC] 的值修改为 -1
006F8493 90 nop
006F8494 . 8B95 AC050000 mov edx,dword ptr ss:[ebp+0x5AC]
006F849A . 8D0CC0 lea ecx,dword ptr ds:[eax+eax*8]
006F849D . 8B82 A4050000 mov eax,dword ptr ds:[edx+0x5A4]
至此更改完成。上分析数据(有点杂)
|
-
-
red2.txt
118.83 KB, 下载次数: 78, 下载积分: 吾爱币 -1 CB
分析数据
-
-
Game.rar
1.25 KB, 下载次数: 209, 下载积分: 吾爱币 -1 CB
ce数据
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|