标题: 发现exe一个古老的bug
性别:未知-离线 star175

★★

Rank: 9Rank: 9Rank: 9
轩辕春秋年度最佳(轩辕工作室)
组别 白衣卿相
级别 讨逆将军
好贴 3
功绩 153
帖子 686
编号 91725
注册 2006-11-16


发表于 2008-11-8 10:48 资料 文集 短消息 只看该作者
发现exe一个古老的bug

最近发现ccz的原版exe有一个bug,不过这个bug并不是很容易出现,因此一直没有得到修正,我自己也是很偶然发现的.

测试这个bug的方法如下:
先把某个武将的武器护具卸掉,再使用武将一览,查看武将装备,当看到这名裸体武将以后,如果再继续看其他武将,bug就出现了:


图片附件: 02.gif (2008-11-8 10:48, 324.4 K)


标签上的文字没有了
不过这完全只是一个显示上的bug,并不会对游戏有任何不良影响.

除了原版外,还测试了yfz以及我自己的exe,均发现有此bug存在,经过研究写出了修改方法:


武器护具不能显示 LV  EXP文字
增加一个自定义函数  共调用两次

00405265  /$  55               PUSH EBP
00405266  |.  8BEC             MOV EBP,ESP
00405268  |.  68 C46A4800      PUSH Ekd5.00486AC4                              ;  ASCII "Lv"
0040526D  |.  837D 0C 00       CMP DWORD PTR SS:[EBP+C],0
00405271  |.  75 07            JNZ SHORT Ekd5.0040527A
00405273  |.  68 8A050000      PUSH 58A
00405278  |.  EB 05            JMP SHORT Ekd5.0040527F
0040527A  |>  68 8C050000      PUSH 58C
0040527F  |>  FF75 08          PUSH DWORD PTR SS:[EBP+8]                       ; |hWnd
00405282  |.  FF15 D8624800    CALL DWORD PTR DS:[<&USER32.SetDlgItemTextA>]   ; \SetDlgItemTextA
00405288  |.  68 D06A4800      PUSH Ekd5.00486AD0                              ;  ASCII "Exp"
0040528D  |.  837D 0C 00       CMP DWORD PTR SS:[EBP+C],0
00405291  |.  75 07            JNZ SHORT Ekd5.0040529A
00405293  |.  68 8B050000      PUSH 58B
00405298  |.  EB 05            JMP SHORT Ekd5.0040529F
0040529A  |>  68 8D050000      PUSH 58D
0040529F  |>  FF75 08          PUSH DWORD PTR SS:[EBP+8]                       ; |hWnd
004052A2  |.  FF15 D8624800    CALL DWORD PTR DS:[<&USER32.SetDlgItemTextA>]   ; \SetDlgItemTextA
004052A8  |.  8BE5             MOV ESP,EBP
004052AA  |.  5D               POP EBP
004052AB  \.  C2 0800          RETN 8



00476EB9      FF75 08       PUSH DWORD PTR SS:[EBP+8]
00476EBC      FF15 DC624800 CALL DWORD PTR DS:[<&USER32.GetDlgItem>]     ;  USER32.GetDlgItem
00476EC2      85C0          TEST EAX,EAX
00476EC4      0F84 6C040000 JE Ekd5.00477336
00476ECA      6A 00         PUSH 0
00476ECC      8B4D DC       MOV ECX,DWORD PTR SS:[EBP-24]
00476ECF      E8 1CF7F8FF   CALL Ekd5.004065F0                           
00476ED4      3C FF         CMP AL,0FF
00476ED6      0F84 0C010000 JE Ekd5.00476FE8
00476EDC      6A 00         PUSH 0
00476EDE      FF75 08       PUSH DWORD PTR SS:[EBP+8]
00476EE1      E8 7FE3F8FF   CALL Ekd5.00405265



00476FE3     /E9 94000000   JMP Ekd5.0047707C



0047704D      FF75 08       PUSH DWORD PTR SS:[EBP+8]
00477050      FF15 DC624800 CALL DWORD PTR DS:[<&USER32.GetDlgItem>]     ; ||hWnd
00477056      50            PUSH EAX
00477057      FF15 E0624800 CALL DWORD PTR DS:[<&USER32.ShowWindow>]     ; |hWnd
0047705D      68 28754B00   PUSH Ekd5.004B7528
00477062      68 79050000   PUSH 579
00477067      FF75 08       PUSH DWORD PTR SS:[EBP+8]
0047706A      FF15 D8624800 CALL DWORD PTR DS:[<&USER32.SetDlgItemTextA>>;  USER32.SetDlgItemTextA
00477070      6A 68         PUSH 68
00477072      B9 D86C4B00   MOV ECX,Ekd5.004B6CD8                        ; /Arg1
00477077      E8 53C3FEFF   CALL Ekd5.004633CF
0047707C      6A 01         PUSH 1
0047707E      8B4D DC       MOV ECX,DWORD PTR SS:[EBP-24]
00477081      E8 6AF5F8FF   CALL Ekd5.004065F0
00477086      3C FF         CMP AL,0FF
00477088      0F84 0C010000 JE Ekd5.0047719A
0047708E      6A 01         PUSH 1
00477090      FF75 08       PUSH DWORD PTR SS:[EBP+8]
00477093      E8 CDE1F8FF   CALL Ekd5.00405265


蓝色文字是原有的代码,不过为了挤出10个字节,挪动了一下位置,红色的是对新函数的调用代码.

以上是在本人发布的exe上进行的修改,如果是其他版本的请自行寻找空白位置.

本帖最近评分记录
yanguodong 2008-11-9 13:42 +90 好帖奖励


顶部
性别:未知-离线 qw65
(仲天之帆)

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 3
帖子 252
编号 98424
注册 2007-1-3


发表于 2008-11-8 11:55 资料 短消息 只看该作者 QQ
我也发现了,不过一直不在意


顶部
性别:未知-离线 qw65
(仲天之帆)

Rank: 3Rank: 3Rank: 3
组别 士兵
级别 忠义校尉
功绩 3
帖子 252
编号 98424
注册 2007-1-3


发表于 2008-11-9 06:45 资料 短消息 只看该作者 QQ
可以请教一下吗?我用二号补丁玩,为什么控制友军指令无效??
顶部
性别:未知-离线 434902652

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 35
编号 164975
注册 2007-5-26
家族 轩辕学院


发表于 2008-11-9 08:48 资料 短消息 只看该作者
是有这一回事,楼主很仔细
顶部

正在浏览此帖的会员 - 共 1 人在线




当前时区 GMT+8, 现在时间是 2025-2-8 04:04
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.010471 second(s), 10 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP