|
|
==================
我也在看雪上发了此帖 = =
更新:果然这东西在看雪上是无解的
牛人们只关心漏洞……
==================
能否有人把C段的代码解释下,我汇编不行,顶多看个半懂……
先给出代码:
首先,READFILE:
004C2E6E|.FF15 00D14C00 CALL DWORD PTR DS:[<&KERNEL32.ReadFile>] ; \\ReadFile
004C2E74|.85C0TEST EAX,EAX
004C2E76|.75 3A JNZ SHORT chanteli.004C2EB2
004C2E78|.FF15 0CD14C00 CALL DWORD PTR DS:[<&KERNEL32.GetLastErr>; [GetLastError
004C2E7E|.6A 05 PUSH 5
004C2E80|.59POP ECX
004C2E81|.3BC1CMP EAX,ECX
004C2E83|.75 15 JNZ SHORT chanteli.004C2E9A
004C2E85|.C705 505D3106>MOV DWORD PTR DS:[6315D50],9
004C2E8F|.890D 545D3106 MOV DWORD PTR DS:[6315D54],ECX
004C2E95|.E9 3E010000 JMP chanteli.004C2FD8
004C2E9A|>83F8 6D CMP EAX,6D
004C2E9D|.75 07 JNZ SHORT chanteli.004C2EA6
004C2E9F|>33C0XOR EAX,EAX
004C2EA1|.E9 35010000 JMP chanteli.004C2FDB
004C2EA6|>50PUSH EAX
004C2EA7|.E8 02690000 CALL chanteli.004C97AE
004C2EAC|.59POP ECX
004C2EAD|.E9 26010000 JMP chanteli.004C2FD8
004C2EB2|>8B03MOV EAX,DWORD PTR DS:[EBX]
004C2EB4|.8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
004C2EB7|.0155 F8 ADD DWORD PTR SS:[EBP-8],EDX
004C2EBA|.8D4C30 04 LEA ECX,DWORD PTR DS:[EAX+ESI+4]
004C2EBE|.8A4430 04 MOV AL,BYTE PTR DS:[EAX+ESI+4]
004C2EC2|.A8 80 TEST AL,80
004C2EC4|.0F84 F8000000 JE chanteli.004C2FC2
004C2ECA|.85D2TEST EDX,EDX
004C2ECC|.74 09 JE SHORT chanteli.004C2ED7
004C2ECE|.803F 0A CMP BYTE PTR DS:[EDI],0A
004C2ED1|.75 04 JNZ SHORT chanteli.004C2ED7
004C2ED3|.0C 04 OR AL,4
004C2ED5|.EB 02 JMP SHORT chanteli.004C2ED9
004C2ED7|>24 FB AND AL,0FB
004C2ED9|>8801MOV BYTE PTR DS:[ECX],AL
004C2EDB|.8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
004C2EDE|.8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]
004C2EE1|.8945 10 MOV DWORD PTR SS:[EBP+10],EAX
004C2EE4|.03C8ADD ECX,EAX
004C2EE6|.3BC1CMP EAX,ECX
004C2EE8|.894D F8 MOV DWORD PTR SS:[EBP-8],ECX
004C2EEB|.0F83 CB000000 JNB chanteli.004C2FBC
004C2EF1|>8B45 10 /MOV EAX,DWORD PTR SS:[EBP+10]
004C2EF4|.8A00|MOV AL,BYTE PTR DS:[EAX]
004C2EF6|.3C 1A |CMP AL,1A
004C2EF8|.0F84 AE000000 |JE chanteli.004C2FAC
004C2EFE|.3C 0D |CMP AL,0D
004C2F00|.74 0B |JE SHORT chanteli.004C2F0D
004C2F02|.8807|MOV BYTE PTR DS:[EDI],AL
004C2F04|.47|INC EDI
004C2F05|.FF45 10 |INC DWORD PTR SS:[EBP+10]
004C2F08|.E9 91000000 |JMP chanteli.004C2F9E
004C2F0D|>49|DEC ECX
004C2F0E|.394D 10 |CMP DWORD PTR SS:[EBP+10],ECX
004C2F11|.73 18 |JNB SHORT chanteli.004C2F2B
004C2F13|.8B45 10 |MOV EAX,DWORD PTR SS:[EBP+10]
004C2F16|.40|INC EAX
004C2F17|.8038 0A |CMP BYTE PTR DS:[EAX],0A
004C2F1A|.75 06 |JNZ SHORT chanteli.004C2F22
004C2F1C|.8345 10 02|ADD DWORD PTR SS:[EBP+10],2
004C2F20|.EB 5E |JMP SHORT chanteli.004C2F80
004C2F22|>C607 0D |MOV BYTE PTR DS:[EDI],0D
004C2F25|.47|INC EDI
004C2F26|.8945 10 |MOV DWORD PTR SS:[EBP+10],EAX
004C2F29|.EB 73 |JMP SHORT chanteli.004C2F9E
004C2F2B|>8D45 F4 |LEA EAX,DWORD PTR SS:[EBP-C]
004C2F2E|.6A 00 |PUSH 0; /pOverlapped = NULL
004C2F30|.50|PUSH EAX; |pBytesRead
004C2F31|.FF45 10 |INC DWORD PTR SS:[EBP+10] ; |
004C2F34|.8D45 FF |LEA EAX,DWORD PTR SS:[EBP-1]; |
004C2F37|.6A 01 |PUSH 1; |BytesToRead = 1
004C2F39|.50|PUSH EAX; |Buffer
004C2F3A|.8B03|MOV EAX,DWORD PTR DS:[EBX]; |
004C2F3C|.FF3430|PUSH DWORD PTR DS:[EAX+ESI] ; |hFile
004C2F3F|.FF15 00D14C00 |CALL DWORD PTR DS:[<&KERNEL32.ReadFile>>; \\ReadFile
004C2F45|.85C0|TEST EAX,EAX
004C2F47|.75 0A |JNZ SHORT chanteli.004C2F53
004C2F49|.FF15 0CD14C00 |CALL DWORD PTR DS:[<&KERNEL32.GetLastEr>; [GetLastError
004C2F4F|.85C0|TEST EAX,EAX
004C2F51|.75 47 |JNZ SHORT chanteli.004C2F9A
004C2F53|>837D F4 00|CMP DWORD PTR SS:[EBP-C],0
004C2F57|.74 41 |JE SHORT chanteli.004C2F9A
004C2F59|.8B03|MOV EAX,DWORD PTR DS:[EBX]
004C2F5B|.F64430 04 48|TEST BYTE PTR DS:[EAX+ESI+4],48
004C2F60|.74 13 |JE SHORT chanteli.004C2F75
004C2F62|.8A45 FF |MOV AL,BYTE PTR SS:[EBP-1]
004C2F65|.3C 0A |CMP AL,0A
004C2F67|.74 17 |JE SHORT chanteli.004C2F80
004C2F69|.C607 0D |MOV BYTE PTR DS:[EDI],0D
004C2F6C|.8B0B|MOV ECX,DWORD PTR DS:[EBX]
004C2F6E|.47|INC EDI
004C2F6F|.884431 05 |MOV BYTE PTR DS:[ECX+ESI+5],AL
004C2F73|.EB 29 |JMP SHORT chanteli.004C2F9E
004C2F75|>3B7D 0C |CMP EDI,DWORD PTR SS:[EBP+C]
004C2F78|.75 0B |JNZ SHORT chanteli.004C2F85
004C2F7A|.807D FF 0A|CMP BYTE PTR SS:[EBP-1],0A
004C2F7E|.75 05 |JNZ SHORT chanteli.004C2F85
004C2F80|>C607 0A |MOV BYTE PTR DS:[EDI],0A
004C2F83|.EB 18 |JMP SHORT chanteli.004C2F9D
004C2F85|>6A 01 |PUSH 1
004C2F87|.6A FF |PUSH -1
004C2F89|.FF75 08 |PUSH DWORD PTR SS:[EBP+8]
004C2F8C|.E8 51100000 |CALL chanteli.004C3FE2
004C2F91|.83C4 0C |ADD ESP,0C
004C2F94|.807D FF 0A|CMP BYTE PTR SS:[EBP-1],0A
004C2F98|.74 04 |JE SHORT chanteli.004C2F9E
004C2F9A|>C607 0D |MOV BYTE PTR DS:[EDI],0D
004C2F9D|>47|INC EDI
004C2F9E|>8B4D F8 |MOV ECX,DWORD PTR SS:[EBP-8]
004C2FA1|.394D 10 |CMP DWORD PTR SS:[EBP+10],ECX
004C2FA4|.^ 0F82 47FFFFFF \\JB chanteli.004C2EF1
004C2FAA|.EB 10 JMP SHORT chanteli.004C2FBC
004C2FAC|>8B03MOV EAX,DWORD PTR DS:[EBX]
004C2FAE|.8D7430 04 LEA ESI,DWORD PTR DS:[EAX+ESI+4]
004C2FB2|.8A06MOV AL,BYTE PTR DS:[ESI]
004C2FB4|.A8 40 TEST AL,40
004C2FB6|.75 04 JNZ SHORT chanteli.004C2FBC
004C2FB8|.0C 02 OR AL,2
004C2FBA|.8806MOV BYTE PTR DS:[ESI],AL
004C2FBC|>2B7D 0C SUB EDI,DWORD PTR SS:[EBP+C]
004C2FBF|.897D F8 MOV DWORD PTR SS:[EBP-8],EDI
004C2FC2|>8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
004C2FC5|.EB 14 JMP SHORT chanteli.004C2FDB
004C2FC7|>8325 545D3106>AND DWORD PTR DS:[6315D54],0
004C2FCE|.C705 505D3106>MOV DWORD PTR DS:[6315D50],9
004C2FD8|>83C8 FF OR EAX,FFFFFFFF
004C2FDB|>5FPOP EDI
004C2FDC|.5EPOP ESI
004C2FDD|.5BPOP EBX
004C2FDE|.C9LEAVE
004C2FDF\\.C3RETN
上面估计意义不大,下面,返回后来到:
004C2D11/$56PUSH ESI
004C2D12|.8B7424 08 MOV ESI,DWORD PTR SS:[ESP+8]
004C2D16|.8B46 0C MOV EAX,DWORD PTR DS:[ESI+C]
004C2D19|.A8 83 TEST AL,83
004C2D1B|.0F84 C4000000 JE chanteli.004C2DE5
004C2D21|.A8 40 TEST AL,40
004C2D23|.0F85 BC000000 JNZ chanteli.004C2DE5
004C2D29|.A8 02 TEST AL,2
004C2D2B|.74 0A JE SHORT chanteli.004C2D37
004C2D2D|.0C 20 OR AL,20
004C2D2F|.8946 0C MOV DWORD PTR DS:[ESI+C],EAX
004C2D32|.E9 AE000000 JMP chanteli.004C2DE5
004C2D37|>0C 01 OR AL,1
004C2D39|.66:A9 0C01TEST AX,10C
004C2D3D|.8946 0C MOV DWORD PTR DS:[ESI+C],EAX
004C2D40|.75 09 JNZ SHORT chanteli.004C2D4B
004C2D42|.56PUSH ESI
004C2D43|.E8 A06D0000 CALL chanteli.004C9AE8
004C2D48|.59POP ECX
004C2D49|.EB 05 JMP SHORT chanteli.004C2D50
004C2D4B|>8B46 08 MOV EAX,DWORD PTR DS:[ESI+8]
004C2D4E|.8906MOV DWORD PTR DS:[ESI],EAX
004C2D50|>FF76 18 PUSH DWORD PTR DS:[ESI+18]
004C2D53|.FF76 08 PUSH DWORD PTR DS:[ESI+8]
004C2D56|.FF76 10 PUSH DWORD PTR DS:[ESI+10]
004C2D59|.E8 8C000000 CALL chanteli.004C2DEA
004C2D5E|.83C4 0C ADD ESP,0C
004C2D61|.8946 04 MOV DWORD PTR DS:[ESI+4],EAX
004C2D64|.85C0TEST EAX,EAX
004C2D66|.74 6C JE SHORT chanteli.004C2DD4
004C2D68|.83F8 FF CMP EAX,-1
004C2D6B|.74 67 JE SHORT chanteli.004C2DD4
004C2D6D|.8B56 0C MOV EDX,DWORD PTR DS:[ESI+C]
004C2D70|.F6C2 82 TEST DL,82
004C2D73|.75 34 JNZ SHORT chanteli.004C2DA9
004C2D75|.8B4E 10 MOV ECX,DWORD PTR DS:[ESI+10]
004C2D78|.57PUSH EDI
004C2D79|.83F9 FF CMP ECX,-1
004C2D7C|.74 14 JE SHORT chanteli.004C2D92
004C2D7E|.8BF9MOV EDI,ECX
004C2D80|.C1FF 05 SAR EDI,5
004C2D83|.83E1 1F AND ECX,1F
004C2D86|.8B3CBD 807331>MOV EDI,DWORD PTR DS:[EDI*4+6317380]
004C2D8D|.8D3CCFLEA EDI,DWORD PTR DS:[EDI+ECX*8]
004C2D90|.EB 05 JMP SHORT chanteli.004C2D97
004C2D92|>BF F8125300 MOV EDI,chanteli.005312F8
004C2D97|>8A4F 04 MOV CL,BYTE PTR DS:[EDI+4]
004C2D9A|.5FPOP EDI
004C2D9B|.80E1 82 AND CL,82
004C2D9E|.80F9 82 CMP CL,82
004C2DA1|.75 06 JNZ SHORT chanteli.004C2DA9
004C2DA3|.80CE 20 OR DH,20
004C2DA6|.8956 0C MOV DWORD PTR DS:[ESI+C],EDX
004C2DA9|>817E 18 00020>CMP DWORD PTR DS:[ESI+18],200
004C2DB0|.75 14 JNZ SHORT chanteli.004C2DC6
004C2DB2|.8B4E 0C MOV ECX,DWORD PTR DS:[ESI+C]
004C2DB5|.F6C1 08 TEST CL,8
004C2DB8|.74 0C JE SHORT chanteli.004C2DC6
004C2DBA|.F6C5 04 TEST CH,4
004C2DBD|.75 07 JNZ SHORT chanteli.004C2DC6
004C2DBF|.C746 18 00100>MOV DWORD PTR DS:[ESI+18],1000
004C2DC6|>8B0EMOV ECX,DWORD PTR DS:[ESI]
004C2DC8|.48DEC EAX
004C2DC9|.8946 04 MOV DWORD PTR DS:[ESI+4],EAX
004C2DCC|.0FB601MOVZX EAX,BYTE PTR DS:[ECX]
004C2DCF|.41INC ECX
004C2DD0|.890EMOV DWORD PTR DS:[ESI],ECX
004C2DD2|.5EPOP ESI
004C2DD3|.C3RETN
004C2DD4|>F7D8NEG EAX
004C2DD6|.1BC0SBB EAX,EAX
004C2DD8|.83E0 10 AND EAX,10
004C2DDB|.83C0 10 ADD EAX,10
004C2DDE|.0946 0C OR DWORD PTR DS:[ESI+C],EAX
004C2DE1|.8366 04 00AND DWORD PTR DS:[ESI+4],0
004C2DE5|>83C8 FF OR EAX,FFFFFFFF
004C2DE8|.5EPOP ESI
004C2DE9\\.C3RETN
返回后来到循环:(重要!)
004BE669|> \\8B75 14 MOV ESI,DWORD PTR SS:[EBP+14]
004BE66C|.66:F746 0C 0C>TEST WORD PTR DS:[ESI+C],10C
004BE672|.74 08 JE SHORT chanteli.004BE67C
004BE674|.8B46 18 MOV EAX,DWORD PTR DS:[ESI+18]
004BE677|.8945 14 MOV DWORD PTR SS:[EBP+14],EAX
004BE67A|.EB 0C JMP SHORT chanteli.004BE688
004BE67C|>C745 14 00100>MOV DWORD PTR SS:[EBP+14],1000
004BE683|.EB 03 JMP SHORT chanteli.004BE688
004BE685|>8B4D 08 /MOV ECX,DWORD PTR SS:[EBP+8]
004BE688|>66:F746 0C 0C> TEST WORD PTR DS:[ESI+C],10C
004BE68E|.74 2A |JE SHORT chanteli.004BE6BA
004BE690|.8B46 04 |MOV EAX,DWORD PTR DS:[ESI+4]
004BE693|.85C0|TEST EAX,EAX
004BE695|.74 23 |JE SHORT chanteli.004BE6BA
004BE697|.3BC8|CMP ECX,EAX
004BE699|.8BF9|MOV EDI,ECX
004BE69B|.72 02 |JB SHORT chanteli.004BE69F
004BE69D|.8BF8|MOV EDI,EAX
004BE69F|>57|PUSH EDI
004BE6A0|.FF36|PUSH DWORD PTR DS:[ESI]
004BE6A2|.53|PUSH EBX
004BE6A3|.E8 38490000 |CALL chanteli.004C2FE0
004BE6A8|.297D 08 |SUB DWORD PTR SS:[EBP+8],EDI
004BE6AB|.297E 04 |SUB DWORD PTR DS:[ESI+4],EDI
004BE6AE|.013E|ADD DWORD PTR DS:[ESI],EDI
004BE6B0|.83C4 0C |ADD ESP,0C
004BE6B3|.03DF|ADD EBX,EDI
004BE6B5|.8B7D FC |MOV EDI,DWORD PTR SS:[EBP-4]
004BE6B8|.EB 4B |JMP SHORT chanteli.004BE705
004BE6BA|>3B4D 14 |CMP ECX,DWORD PTR SS:[EBP+14]
004BE6BD|.72 2E |JB SHORT chanteli.004BE6ED
004BE6BF|.837D 14 00|CMP DWORD PTR SS:[EBP+14],0
004BE6C3|.8BC1|MOV EAX,ECX
004BE6C5|.74 09 |JE SHORT chanteli.004BE6D0
004BE6C7|.33D2|XOR EDX,EDX
004BE6C9|.F775 14 |DIV DWORD PTR SS:[EBP+14]
004BE6CC|.8BC1|MOV EAX,ECX
004BE6CE|.2BC2|SUB EAX,EDX
004BE6D0|>50|PUSH EAX
004BE6D1|.53|PUSH EBX
004BE6D2|.FF76 10 |PUSH DWORD PTR DS:[ESI+10]
004BE6D5|.E8 10470000 |CALL chanteli.004C2DEA====READFILE
004BE6DA|.83C4 0C |ADD ESP,0C
004BE6DD|.85C0|TEST EAX,EAX
004BE6DF|.74 36 |JE SHORT chanteli.004BE717
004BE6E1|.83F8 FF |CMP EAX,-1
004BE6E4|.74 37 |JE SHORT chanteli.004BE71D
004BE6E6|.2945 08 |SUB DWORD PTR SS:[EBP+8],EAX
004BE6E9|.03D8|ADD EBX,EAX
004BE6EB|.EB 18 |JMP SHORT chanteli.004BE705
004BE6ED|>56|PUSH ESI
004BE6EE|.E8 1E460000 |CALL chanteli.004C2D11
004BE6F3|.83F8 FF |CMP EAX,-1
004BE6F6|.59|POP ECX
004BE6F7|.74 28 |JE SHORT chanteli.004BE721
004BE6F9|.8803|MOV BYTE PTR DS:[EBX],AL
004BE6FB|.8B46 18 |MOV EAX,DWORD PTR DS:[ESI+18]
004BE6FE|.43|INC EBX
004BE6FF|.FF4D 08 |DEC DWORD PTR SS:[EBP+8]
004BE702|.8945 14 |MOV DWORD PTR SS:[EBP+14],EAX
004BE705|>837D 08 00|CMP DWORD PTR SS:[EBP+8],0
004BE709|.^ 0F85 76FFFFFF \\JNZ chanteli.004BE685
004BE70F|.8B45 10 MOV EAX,DWORD PTR SS:[EBP+10]
004BE712|>5FPOP EDI
004BE713|.5EPOP ESI
004BE714|.5BPOP EBX
004BE715|.C9LEAVE
004BE716|.C3RETN |
|