7380ADD1 |. E8 F6110000 CALL WINABC.7380BFCC
7380ADD6 |. 391D CC558173 CMP DWORD PTR DS:[738155CC],EBX
7380ADDC |. EB 23 JMP SHORT WINABC.7380AE01
v的输入状态不同,比如Vabc 会输入abc英文,V1什么的为特殊字符和符号。
下面去找出问题的地方
7380AC81 |. 33DB XOR EBX,EBX
.......
7380AE08 |> 0FB7C6 MOVZX EAX,SI ; Case 3 of switch 7380ACE2
7380AE0B |. 50 PUSH EAX
7380AE0C |. E8 340A0000 CALL WINABC.7380B845
7380AE11 |. 2BC3 SUB EAX,EBX
7380AE13 |. 74 26 JE SHORT WINABC.7380AE3B
.......
7380AE3B |> 381D 6C488173 CMP BYTE PTR DS:[7381486C],BL ;DS:[7381486C]=2
7380AE41 |. 74 22 JE SHORT WINABC.7380AE65 ;没有发生跳转,正常情况下0x73811F52肯定大于0
7380AE43 |. 0FB705 521F817>MOVZX EAX,WORD PTR DS:[73811F52] ;DS:[73811F52]为0
7380AE4A |. 48 DEC EAX ;FFFFFFFF
7380AE4B |. C605 CC758173 >MOV BYTE PTR DS:[738175CC],2
7380AE52 |. 50 PUSH EAX
7380AE53 |. 68 561F8173 PUSH WINABC.73811F56
7380AE58 |. E8 FA140000 CALL WINABC.7380C357
7380AE5D |. 881D 6C488173 MOV BYTE PTR DS:[7381486C],BL ;函数将发生错误
7380AE63 |. EB 31 JMP SHORT WINABC.7380AE96
如果del删去V,DS:[73811F52]变量为0,但是DS:[7381486C]=2没有变为0,仍然在输入中途状态,dec eax是为了取得除了v之外的字母串的长度,结果这里变为 0xffffffff,7380AE5D |. 881D 6C488173 MOV BYTE PTR DS:[7381486C],BL 中 函数没有做检查。
7380C4C8 0FB745 10 MOVZX EAX,WORD PTR SS:[EBP+10] ; eax = 0xffff