Board logo

标题: STAR进,5.7中是不是有这几段 [打印本页]

作者: 砖家叫兽    时间: 2011-8-5 10:42     标题: STAR进,5.7中是不是有这几段

00435D0C  |.  8B45 0C        MOV EAX,DWORD PTR SS:[EBP+C]
00435D0F  |.  8945 E0        MOV DWORD PTR SS:[EBP-20],EAX
00435D12  |.  3C 08          CMP AL,8
00435D14  |.  77 40          JA SHORT 5_7Ekd5.00435D56

00435D56  |> \8B4D E4        MOV ECX,DWORD PTR SS:[EBP-1C]            ; |
00435D59  |.  8B45 F4        MOV EAX,DWORD PTR SS:[EBP-C]             ; |
00435D5C  |.  E8 29DCFEFF    CALL 5_7Ekd5.0042398A                    ; \5_7Ekd5.0042398A




0042398A  /$  55             PUSH EBP
0042398B  |.  8BEC           MOV EBP,ESP
0042398D  |.  83EC 20        SUB ESP,20
00423990  |.  894D EC        MOV DWORD PTR SS:[EBP-14],ECX
00423993  |.  8945 F4        MOV DWORD PTR SS:[EBP-C],EAX
00423996  |.  C745 E8 7D0E50>MOV DWORD PTR SS:[EBP-18],5_7Ekd5.00500E>
0042399D  |.  C745 FC 4B0E50>MOV DWORD PTR SS:[EBP-4],5_7Ekd5.00500E4>
004239A4  |.  33C9           XOR ECX,ECX
004239A6  |.  894D F0        MOV DWORD PTR SS:[EBP-10],ECX
004239A9  |.  894D E4        MOV DWORD PTR SS:[EBP-1C],ECX
004239AC  |.  894D E0        MOV DWORD PTR SS:[EBP-20],ECX
004239AF  |.  EB 03          JMP SHORT 5_7Ekd5.004239B4
004239B1  |>  FF45 F0        /INC DWORD PTR SS:[EBP-10]
004239B4  |>  8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
004239B7  |.  3945 F0        |CMP DWORD PTR SS:[EBP-10],EAX
004239BA  |.  0F83 B1000000  |JNB 5_7Ekd5.00423A71
作者: 砖家叫兽    时间: 2011-8-5 10:45

注意流程,
CMP AL,8这个分支

435D56开始没有传入参数就开始CALL

004239AF  |.  EB 03          JMP SHORT 5_7Ekd5.004239B4
004239B1  |>  FF45 F0        /INC DWORD PTR SS:[EBP-10]
004239B4  |>  8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]
004239B7  |.  3945 F0        |CMP DWORD PTR SS:[EBP-10],EAX
004239BA  |.  0F83 B1000000  |JNB 5_7Ekd5.00423A71

而这里终止条件是 [EBP-10]>=[EBP+8]

引擎每次都由于没有中断循环,内存访问到518000而崩溃

求解法
作者: 砖家叫兽    时间: 2011-8-5 10:47

00423A11  |. /74 42          |JE SHORT 5_7Ekd5.00423A55
00423A13  |. |8A4D F8        |MOV CL,BYTE PTR SS:[EBP-8]
00423A16  |. |0FB6C9         |MOVZX ECX,CL
00423A19  |. |51             |PUSH ECX
00423A1A  |. |8B4D EC        |MOV ECX,DWORD PTR SS:[EBP-14]
00423A1D  |. |E8 DE350B00    |CALL 5_7Ekd5.004D7000
00423A22  |. |85C0           |TEST EAX,EAX
00423A24  |. |74 2F          |JE SHORT 5_7Ekd5.00423A55
00423A26  |. |90             |NOP
00423A27  |. |90             |NOP
00423A28  |. |90             |NOP
00423A29  |. |90             |NOP
00423A2A  |. |90             |NOP
00423A2B  |. |90             |NOP
00423A2C  |. |90             |NOP
00423A2D  |. |90             |NOP
00423A2E  |> |807D 10 01     |CMP BYTE PTR SS:[EBP+10],1
00423A32  |. |75 1B          |JNZ SHORT 5_7Ekd5.00423A4F
00423A34  |. |8A4D F8        |MOV CL,BYTE PTR SS:[EBP-8]
00423A37  |. |51             |PUSH ECX
00423A38  |. |8B4D EC        |MOV ECX,DWORD PTR SS:[EBP-14]
00423A3B  |. |E8 C0350B00    |CALL 5_7Ekd5.004D7000
00423A40  |. |85C0           |TEST EAX,EAX
00423A42  |. |75 11          |JNZ SHORT 5_7Ekd5.00423A55
00423A44  |. |90             |NOP
00423A45  |. |90             |NOP
00423A46  |. |90             |NOP
00423A47  |. |90             |NOP
00423A48  |. |90             |NOP
00423A49  |. |90             |NOP
00423A4A  |. |90             |NOP
00423A4B  |. |90             |NOP
00423A4C  |. |90             |NOP
00423A4D  |. |90             |NOP
00423A4E  |. |90             |NOP
00423A4F  |> |807D 10 02     |CMP BYTE PTR SS:[EBP+10],2
00423A53  |. |75 17          |JNZ SHORT 5_7Ekd5.00423A6C

实际上这一段只是改动了后面这一段,将判断双方是否同一方改为是否混战判断
作者: star175    时间: 2011-8-5 12:08

跳转错误
改成
00435D14     /77 4E         JA SHORT Ekd5.00435D64

穿透类型只有8种,其他设置均为无穿透

不过这个bug还真是不容易发现,很少人会去设置>=9的穿透类型吧

[ 本帖最后由 star175 于 2011-8-5 12:20 编辑 ]
作者: 砖家叫兽    时间: 2011-8-5 12:58

哈哈,谢了

要不是引擎崩了我是不可能发现的。
作者: 砖家叫兽    时间: 2011-8-5 13:13

还是不行

不过既然只有8种穿透,不如直接改

00435D09  |.  8955 F4       MOV DWORD PTR SS:[EBP-C],EDX
00435D0C  |.  8B45 0C       MOV EAX,DWORD PTR SS:[EBP+C]
00435D0F  |.  8945 E0       MOV DWORD PTR SS:[EBP-20],EAX
00435D12  |.  3C 08         CMP AL,8
00435D14      77 07         JA SHORT 5_7Ekd5.00435D1D
00435D16  |.  FF2485 285F43>JMP DWORD PTR DS:[EAX*4+435F28]          ;  5_7Ekd5.00435D1D
00435D1D  |>  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
00435D20  |.  EB 21         JMP SHORT 5_7Ekd5.00435D43
作者: star175    时间: 2011-8-5 15:21     标题: 回复 #6 砖家叫兽 的帖子

这样改比较好
作者: 513633522    时间: 2011-8-5 17:27

围观分析会
作者: 冯励    时间: 2011-8-7 17:56

一堆天文。
作者: maqming    时间: 2011-8-18 19:08

真不知道怎么才能看得懂这些!




欢迎光临 轩辕春秋文化论坛 (http://xycq.org.cn/forum/) Powered by Discuz! 5.0.0