首页
社区
课程
招聘
[原创]植物大战僵尸更改植物攻击速度(二)
发表于: 2018-1-7 17:57 20181

[原创]植物大战僵尸更改植物攻击速度(二)

2018-1-7 17:57
20181

谢谢各位的支持,祝论坛越办越好!!!

 ggsuper

2018.1.7

         前文中更改攻击速度采用的是修改植物攻击间隔时间的方法,经过修改可以明显加快植物攻击速度,修改方法是在004838D1处 mov ecx, dword ptr [ebx+5C]修改为mov ecx,22(最小值)。
存在问题为经手工多次测试,22是可修改的最小值,再小则植物不攻击。
此次修改目标为继续加快植物攻击速度。

三、实现

         为找出攻击动画计时数据,需要选择攻击动作较明显的植物进行分析。此处选择“西瓜投手作为目标查找攻击计时数据,因为西瓜投手攻击前有明显的蓄力动作,如下图。待投出的西瓜有一个由最低点到最高点然后投出的动画过程,当西瓜位于最低点时,CE搜索未知初始值,由最低点到最高点的过程中多次搜索减少的值。此处攻击动作很快,CE搜索时可将游戏速度降低(CE自带变速功能,也可用变速齿轮等其它工具)。

得到结果如下(西瓜投手位置变了是因为上一张图里的僵尸被玩死了,重开了一局):


得到结果如下(西瓜投手位置变了是因为上一张图里的僵尸被玩死了,重开了一局):

        得到的结果较多,可以继续搜索减少结果排除干扰,此处也可以分析确定1E833080为攻击动画计时,锁定该值后植物攻击无子弹。OD数据窗口找到该地址,下硬件访问断点。断在下图处:
        得到的结果较多,可以继续搜索减少结果排除干扰,此处也可以分析确定1E833080为攻击动画计时,锁定该值后植物攻击无子弹。OD数据窗口找到该地址,下硬件访问断点。断在下图处:


代码清单如下:
00488AAC      8B83 90000000 mov     eax, dword ptr [ebx+90]        
00488AB2  |.  85C0          test    eax, eax                         
00488AB4      0F84 44050000 je      00488FFE                       
此处进行分析,首先是把 00488AB4 处 je 改为 jne,取消硬件访问断点,F9运行,观察发现植物只有攻击动作,无子弹,未能得到加速效果。
那么换个思考角度,考虑程序如何使用该计时数据。猜测程序可能是不断将计时数据与一个固定数值比较,若等于该值则跳转到攻击实现。
在计时数据上下硬件访问断点,F9运行,观察程序中与计时数据比较的语句。
清单如下:
第一处:
00488B65  |>  83BB 90000000>cmp     dword ptr [ebx+90], 0
00488B6C     |0F85 8C040000 jnz     00488FFE
上面的代码判断计时数据是否为0,将下面的跳转取反,发现植物攻击无子弹,看下一处。
00488FF4  |> \C783 90000000>mov     dword ptr [ebx+90], 1
00488FFE  |>  5F            pop     edi                              ;  1E7BCD68
00488FFF  |.  5E            pop     esi
00489000  |.  5B            pop     ebx
00489001  |.  8BE5          mov     esp, ebp
00489003  |.  5D            pop     ebp
00489004  \.  C2 0400       retn    4
上面的代码无跳转,看下一处。
00488CD2  |> \83BB 90000000>cmp     dword ptr [ebx+90], 1            ;  Default case of switch 00488AF3
00488CD9    ^ 0F85 86FEFFFF jnz     00488B65
上面的代码判断计时数据是否为1,将下面的跳转取反,发现植物攻击一次会发射多发子弹。如下图:

结合在《植物大战僵尸更改植物攻击速度(一)》中的方法,将 004838D1处 mov ecx, dword ptr [ebx+5C]修改为 mov ecx,1 。效果图如下:

四、小结

思路决定出路。逆向时不能见到call就想跟进,分析时一条路不通就换一条路,也许就会柳暗花明。

谢谢各位的支持,祝论坛越办越好!!!

 ggsuper

2018.1.7




代码清单如下:
00488AAC      8B83 90000000 mov     eax, dword ptr [ebx+90]        
00488AB2  |.  85C0          test    eax, eax                         
00488AB4      0F84 44050000 je      00488FFE                       
此处进行分析,首先是把 00488AB4 处 je 改为 jne,取消硬件访问断点,F9运行,观察发现植物只有攻击动作,无子弹,未能得到加速效果。
00488AAC      8B83 90000000 mov     eax, dword ptr [ebx+90]        
00488AB2  |.  85C0          test    eax, eax                         
00488AB4      0F84 44050000 je      00488FFE                       
此处进行分析,首先是把 00488AB4 处 je 改为 jne,取消硬件访问断点,F9运行,观察发现植物只有攻击动作,无子弹,未能得到加速效果。
那么换个思考角度,考虑程序如何使用该计时数据。猜测程序可能是不断将计时数据与一个固定数值比较,若等于该值则跳转到攻击实现。
在计时数据上下硬件访问断点,F9运行,观察程序中与计时数据比较的语句。
清单如下:
第一处:
00488B65  |>  83BB 90000000>cmp     dword ptr [ebx+90], 0
00488B6C     |0F85 8C040000 jnz     00488FFE
上面的代码判断计时数据是否为0,将下面的跳转取反,发现植物攻击无子弹,看下一处。
收藏
免费 1
支持
分享
最新回复 (12)
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
楼主用的什么语言写的?透漏一下
2018-1-7 22:23
0
雪    币: 545
活跃值: (247)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
wx_A经过之前过往之后 楼主用的什么语言写的?透漏一下
这只是用OD进行分析,想做成辅助软件的话,初学者学几天易语言就能写出来。
2018-1-7 22:45
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
想学习c语言写作
2018-1-8 03:40
0
雪    币: 545
活跃值: (247)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
wx_A经过之前过往之后 想学习c语言写作
祝你成功
2018-1-8 06:59
0
雪    币: 6977
活跃值: (1780)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
大学的时候用mfc写过一个植物大战僵尸的外挂,包括无冷却、攻击加速、僵尸全部走一条线、秒杀等,但自从做个这个挂之后,再也不玩了,没游戏体验了
2018-1-8 10:15
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢 
2018-1-8 13:57
0
雪    币: 5
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
大哥    现在主流游戏有驱动保护      你研究过么?
2018-1-8 15:07
0
雪    币: 545
活跃值: (247)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
9
wx_会飞的鱼 大哥 现在主流游戏有驱动保护 你研究过么?
论坛里有过驱动的文章,你可以找找看。
2018-1-8 17:37
0
雪    币: 193
活跃值: (847)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
TopC 大学的时候用mfc写过一个植物大战僵尸的外挂,包括无冷却、攻击加速、僵尸全部走一条线、秒杀等,但自从做个这个挂之后,再也不玩了,没游戏体验了
有些变态的游戏,需要适当的用用CE、OD修改,不过楼主的这个画面,太那个啥了,满屏幕的飞啊!
2018-1-9 13:23
0
雪    币: 193
活跃值: (847)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
TopC 大学的时候用mfc写过一个植物大战僵尸的外挂,包括无冷却、攻击加速、僵尸全部走一条线、秒杀等,但自从做个这个挂之后,再也不玩了,没游戏体验了
技术是把刀,用的不好游戏就失去了美感,但很谢谢分享这样的思路!
2018-1-9 13:25
0
雪    币: 545
活跃值: (247)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
12
小木鱼 技术是把刀,用的不好游戏就失去了美感,但很谢谢分享这样的思路!
逆向的路不好走,拿来游戏来练练手。
2018-1-9 17:58
0
雪    币: 29
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
嘿嘿,用游戏练练手,看资料这两天确实有点头大了
2018-1-13 21:37
0
游客
登录 | 注册 方可回帖
返回
//