注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

葉儛菾堐

身是菩提树,心如明镜台,时时勤拂拭,勿使惹尘埃

 
 
 

日志

 
 

关于小鸡BUG修复详解  

2009-01-01 00:27:29|  分类: 游戏动漫 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 转自LYNN博客. http://pleee.com

这个是war1.20e自身的bug,只要有可能一触发到那里就over。
此bug在game.dll里,VS从来不修改game.dll,要修改也是几万年之后。而浩方是修改了game.dll的,这导致替换game.dll的MH行不通,所以lynnMH1.3在浩方积分房使用有问题(lynnMH1.4就是解决此问题)。如此说来,浩方对修改game.dll是很有经验了,只需要对bug处对症下药,然后加点代码更新下就OK了。
仔细看了下,浩方跟我的思路是差不多的,稍微判断下参数,修改下跳转就OK了。
6F578E96    E8 358A229B          call    GGWAR3.0A7A18D0                  ; //call 到GGWAR3模块里
6F578E9B    90                              nop
6F578E9C    8B86 24010000     mov     eax, dword ptr [esi+124]
6F578EA2    6A 00                        push    0
6F578EA4    50                              push    eax
6F578EA5    8BCF                         mov     ecx, edi
6F578EA7    E8 84ADF5FF          call    6F4D3C30                         ; 触发bug的call,因为传进去的参数问题
call GGWAR3.0A7A18D0进去
0A7A18D0    90                   nop
0A7A18D1    90                   nop
0A7A18D2    8BB8 EC010000        mov     edi, dword ptr [eax+1EC]
0A7A18D8    8B86 24010000        mov     eax, dword ptr [esi+124]
0A7A18DE    893D 10437B0A        mov     dword ptr [A7B4310], edi
0A7A18E4    60                   pushad
0A7A18E5    833D 10437B0A 00     cmp     dword ptr [A7B4310], 0
0A7A18EC    74 04                je      short 0A7A18F2                   ; 参数为0就堆栈平衡,返回了
0A7A18EE    61                   popad
0A7A18EF    C3                   retn                                     ; 返回去正常执行
0A7A18F0    EB 05                jmp     short 0A7A18F7                   ; 这句无用
0A7A18F2    61                   popad
0A7A18F3    5F                   pop     edi
0A7A18F4    5F                   pop     edi
0A7A18F5    5E                   pop     esi
0A7A18F6    C3                   retn
 
 再看下我改的,比它更简洁一点,呵呵:
6F578E91    E8 5AF8B0FF     call    6F0886F0
6F578E96    8BB8 EC010000   mov     edi, dword ptr [eax+1EC]
6F578E9C    E9 0FBD1800     jmp     6F704BB0                         ; 跳到以空地
6F578EA1    90              nop
6F578EA2    6A 00           push    0
6F578EA4    50              push    eax
6F578EA5    8BCF            mov     ecx, edi
6F578EA7    E8 84ADF5FF     call    6F4D3C30                         ; 触发bug的call,因为传进去的参数有问题
jmp 6F704BB0处:
6F704BB0    85FF            test    edi, edi                         ; 判断获取的参数是否为0
6F704BB2  ^ 0F84 1443E7FF   je      6F578ECC                         ; 关键跳
6F704BB8    8B86 24010000   mov     eax, dword ptr [esi+124]
6F704BBE  ^ E9 DF42E7FF     jmp     6F578EA2                         ; 跳回去
6F704BC3    90              nop
je 6F578ECC实际就是跳到下面的6F578ECC那行
6F578E9C   /E9 0FBD1800     jmp     6F704BB0                         ; 跳到以空地
6F578EA1   |90              nop
6F578EA2   |6A 00           push    0
6F578EA4   |50              push    eax
6F578EA5   |8BCF            mov     ecx, edi
6F578EA7   |E8 84ADF5FF     call    6F4D3C30                         ; 触发bug的call,因为传进去的参数有问题
6F578EAC   |8B8E 28010000   mov     ecx, dword ptr [esi+128]
6F578EB2   |6A 00           push    0
6F578EB4   |51              push    ecx
6F578EB5   |8BCF            mov     ecx, edi
6F578EB7   |E8 F4ADF5FF     call    6F4D3CB0
6F578EBC   |8B96 2C010000   mov     edx, dword ptr [esi+12C]
6F578EC2   |6A 00           push    0
6F578EC4   |52              push    edx
6F578EC5   |8BCF            mov     ecx, edi
6F578EC7   |E8 E4ACF5FF     call    6F4D3BB0
6F578ECC   |5F              pop     edi                              ; je 6F578ECC跳到这里!
6F578ECD   |5E              pop     esi
6F578ECE   |C3              retn
OK,小鸡bug算是修复完毕,为什么要这样改,怎么找到这个方法的,就不说了,毕竟,逆向还是要点实力和经验的。
  评论这张
 
阅读(128)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017