申请会员ID:ALX_晨星
1、申 请 I D:ALX_晨星
2、个人邮箱:493962224@qq.com
3、个人技术论坛:www.alx.waphx.com
4、原创技术文章:
植物大战僵尸更改植物攻击速度一、实验目标
加快植物攻击速度。
效果如下图:
https://bbs.pediy.com/upload/attach/201712/532046_52iwwui8z0tmief.jpg
二、实验环境
操作系统:win7 64位
目标程序:植物大战僵尸2010年度版
使用工具:OllyICE、CE
CE修改器链接:https://pan.baidu.com/s/1o7tpowU 三、实验流程 (一)分析思路
以豌豆射手为例,观察发现,射手每隔一段时间发射一次。假设存在发射间隔计时数据,CE搜索该计时数据,具体方法在《植物大战僵尸更改阳光产出速度》一文中有体现,此处不赘述,然后用OD修改。 (二)CE找出攻击时间间隔
找到发射间隔计时数据地址如下:
https://bbs.pediy.com/upload/attach/201712/532046_9k32eonffhlqv51.jpg
(三)OD分析相关代码
OD命令行输入dd 1E623B38 ,并在数据窗口中该地址处下硬件写入断点,F9运行,断在减少攻击间隔计时数据语句处,如下:
https://bbs.pediy.com/upload/attach/201712/532046_mtto48jbvxvbzpl.jpg
分析断点附近语句,先将计时数据减1,再赋值给eax,然后test判断eax是否为0。取消硬件断点,手动将计时数据改为0,F9运行,回到游戏发现射手发射子弹,短时间多次修改计时数据为0,发现射手攻速明显加快。或可以在跳转语句 004838BD地址处F2下断点,断下时手动修改Z标志位为1,使跳转实现也可,效果相同。可以确定的是 004838BD地址的跳转语句是关键跳转。 最初考虑将4838BD处语句改为xor eax,eax使eax清0,或者可以修改4838C4处语句为jle,以实现跳转。修改后发现植物不再攻击,具体原因不明,这对僵尸来说是个好消息。此路不通,于是决定到关键跳转下面的攻击处理程序中进行分析。清单如下:
[*]004838C4 /0F8F D3000000 jg 0048399D ;植物攻击跳转,eax=0时植物攻击
[*]004838CA |6A 0F push 0F
[*]004838CC |E8 EF031100 call 00593CC0
[*]004838D1 |8B4B 5C mov ecx, dword ptr ;攻击加速改为mov ecx,22(不能再小了)
[*]004838D4 |29C1 sub ecx, eax
[*]004838D6 |8B43 24 mov eax, dword ptr
[*]004838D9 |83C4 04 add esp, 4
[*]004838DC |894B 58 mov dword ptr , ecx ;射手时间初始赋值
[*]004838DF |83F8 12 cmp eax, 12
[*]004838E2 |75 0A jnz short 004838EE
[*]004838E4 |E8 C7F9FFFF call 004832B0
[*]004838E9|. |E9 AF000000 jmp 0048399D
[*]004838EE|> |83F8 1D cmp eax, 1D
[*]004838F1|. |75 0C jnz short 004838FF
[*]004838F3|. |8BF3 mov esi, ebx ;Case 1D of switch 004838DF
[*]004838F5|. |E8 06FEFFFF call 00483700
[*]004838FA|. |E9 9E000000 jmp 0048399D
[*]004838FF|> |83F8 1C cmp eax, 1C
[*]00483902|. |75 6B jnz short 0048396F
[*]00483904|. |8B53 1C mov edx, dword ptr ;Case 1C of switch 004838DF
[*]00483907|. |6A 01 push 1
[*]00483909|. |52 push edx
[*]0048390A|. |53 push ebx
[*]0048390B|. |E8 10F6FFFF call 00482F20
[*]00483910|. |8B03 mov eax, dword ptr
[*]00483912|. |8B80 44090000 mov eax, dword ptr
[*]00483918|. |8BB3 98000000 mov esi, dword ptr
[*]0048391E|. |8B78 08 mov edi, dword ptr
[*]00483921|. |E8 EA53F9FF call 00418D10
[*]00483926|. |8BB3 94000000 mov esi, dword ptr
[*]0048392C|. |894424 0C mov dword ptr , eax
[*]00483930|. |8B03 mov eax, dword ptr
[*]00483932|. |8B88 44090000 mov ecx, dword ptr
[*]00483938|. |8B79 08 mov edi, dword ptr
[*]0048393B|. |E8 D053F9FF call 00418D10
[*]00483940|. |8B7424 0C mov esi, dword ptr
[*]00483944|. |6A 14 push 14
[*]00483946|. |56 push esi
[*]00483947|. |8BF8 mov edi, eax
[*]00483949|. |E8 224D0100 call 00498670
[*]0048394E|. |68 BCE07200 push 0072E0BC ;ASCII "anim_head_idle"
[*]00483953|. |8BCE mov ecx, esi
[*]00483955|. |C746 10 00000>mov dword ptr , 0
[*]0048395C|. |E8 7F4C0100 call 004985E0
[*]00483961|. |D947 08 fld dword ptr
[*]00483964|. |D95E 08 fstp dword ptr
[*]00483967|. |D947 04 fld dword ptr
[*]0048396A|. |D95E 04 fstp dword ptr
[*]0048396D|. |EB 2E jmp short 0048399D
[*]0048396F|> |83F8 1A cmp eax, 1A
[*]00483972|. |75 1D jnz short 00483991
[*]00483974|. |8B43 3C mov eax, dword ptr ;Case 1A of switch 004838DF
[*]00483977|. |83F8 20 cmp eax, 20
[*]0048397A|. |75 08 jnz short 00483984
[*]0048397C|. |8B53 1C mov edx, dword ptr
[*]0048397F|. |6A 00 push 0
[*]00483981|. |52 push edx
[*]00483982|. |EB 13 jmp short 00483997
[*]00483984|> |83F8 1E cmp eax, 1E
[*]00483987|. |75 14 jnz short 0048399D
[*]00483989|. |8B43 1C mov eax, dword ptr
[*]0048398C|. |6A 01 push 1
[*]0048398E|. |50 push eax
[*]0048398F |EB 06 jmp short 00483997
[*]00483991 |8B4B 1C mov ecx, dword ptr
[*]00483994 |6A 00 push 0
[*]00483996 |51 push ecx
[*]00483997 |53 push ebx
[*]00483998 |E8 83F5FFFF call 00482F20 ;射手攻击call
上面的清单中有很多call ,在第2行 004838CA 语句处按F2断点,回到游戏,植物攻击时则会断在此处,一路F8下来,发现完成攻击动作只用到了2个call,1个是第3行的call,另一个是第69行的call。分析第3行的call的压栈参数,不像是攻击call,略过。那么只剩下69行的call,在此call处下断,见下图:
https://bbs.pediy.com/upload/attach/201712/532046_qle02yzi9ob80h3.jpg
分析此call参数,ecx比较特别,向上寻找可以修改ecx值的合适位置,在004838D1处 mov ecx, dword ptr 修改为mov ecx,22 (泪奔,经手工多次测试,22是可修改的最小值,再小则植物不攻击)。
四、小结
分析过程中遇到许多情况,整体流程不明晰,很大程度上靠运气。修改后效果如下:
https://bbs.pediy.com/upload/attach/201712/532046_agax0e0v7sty1fr.jpg
最后祝吾爱越做越好,站长越长越帅 我就想知道你这转的文章图片都盗链了,还写自己原创,你自己知道吗? 真是惨……所有图片都是防盗链……………… 千里不留行 转载不留名 他的头像咋点不了呢
页:
[1]