请把下面的反向个C++源代码,学学看看,
00401000 > $ 68 3C204000 PUSH KEYGEN.0040203C ; /Buffer = KEYGEN.0040203C
00401005 . 68 00010000 PUSH 100 ; |BufSize = 100 (256.)
0040100A . E8 35060000 CALL <JMP.&KERNEL32.GetCurrentDirectoryA>; \GetCurrentDirectoryA
0040100F . 85C0 TEST EAX,EAX
00401011 . 0F84 64020000 JE KEYGEN.0040127B
00401017 . 80B8 3C204000>CMP BYTE PTR DS:[EAX+40203C],5C
0040101E . 74 08 JE SHORT KEYGEN.00401028
00401020 . C680 3C204000>MOV BYTE PTR DS:[EAX+40203C],5C
00401027 . 40 INC EAX
00401028 > 8D80 3C204000 LEA EAX,DWORD PTR DS:[EAX+40203C]
0040102E . 68 08234000 PUSH KEYGEN.00402308 ; /String2 = "CODES.INI"
00401033 . 50 PUSH EAX ; |String1
00401034 . E8 FF050000 CALL <JMP.&KERNEL32.lstrcpyA> ; \lstrcpyA
00401039 . C705 00204000>MOV DWORD PTR DS:[402000],KEYGEN.0040231>; ASCII "2 (UNABLE TO READ|WRITE .INI FILE (codes.ini))"
00401043 . 68 3C204000 PUSH KEYGEN.0040203C ; /IniFileName = ""
00401048 . 6A 09 PUSH 9 ; |BufSize = 9
0040104A . 68 83214000 PUSH KEYGEN.00402183 ; |ReturnBuffer = KEYGEN.00402183
0040104F . 68 4A214000 PUSH KEYGEN.0040214A ; |Default = ""
00401054 . 68 48214000 PUSH KEYGEN.00402148 ; |Key = "0"
00401059 . 68 3C214000 PUSH KEYGEN.0040213C ; |Section = "PCID"
0040105E . E8 C9050000 CALL <JMP.&KERNEL32.GetPrivateProfileStr>; \GetPrivateProfileStringA
00401063 . 85C0 TEST EAX,EAX
00401065 . 0F84 10020000 JE KEYGEN.0040127B
0040106B . 68 3C204000 PUSH KEYGEN.0040203C ; /IniFileName = ""
00401070 . 6A 10 PUSH 10 ; |BufSize = 10 (16.)
00401072 . 68 67214000 PUSH KEYGEN.00402167 ; |ReturnBuffer = KEYGEN.00402167
00401077 . 68 4A214000 PUSH KEYGEN.0040214A ; |Default = ""
0040107C . 68 48214000 PUSH KEYGEN.00402148 ; |Key = "0"
00401081 . 68 41214000 PUSH KEYGEN.00402141 ; |Section = "EXPIRE"
00401086 . E8 A1050000 CALL <JMP.&KERNEL32.GetPrivateProfileStr>; \GetPrivateProfileStringA
0040108B . 85C0 TEST EAX,EAX
0040108D . 0F84 E8010000 JE KEYGEN.0040127B
00401093 . C705 00204000>MOV DWORD PTR DS:[402000],KEYGEN.0040234>; ASCII "3 (INCORRECT DATE IN codes.ini PLEASE CHECK IT!)"
0040109D . 83F8 08 CMP EAX,8
004010A0 . 0F85 D5010000 JNZ KEYGEN.0040127B
004010A6 . BE 67214000 MOV ESI,KEYGEN.00402167
004010AB . 0FB706 MOVZX EAX,WORD PTR DS:[ESI]
004010AE . C1E0 10 SHL EAX,10
004010B1 . 66:0B46 03 OR AX,WORD PTR DS:[ESI+3]
004010B5 . A3 F8224000 MOV DWORD PTR DS:[4022F8],EAX
004010BA . 0FB746 06 MOVZX EAX,WORD PTR DS:[ESI+6]
004010BE . 66:A3 FE22400>MOV WORD PTR DS:[4022FE],AX
004010C4 . 68 F2224000 PUSH KEYGEN.004022F2 ; /Arg2 = 004022F2
004010C9 . 56 PUSH ESI ; |Arg1 => 00402167
004010CA . E8 88040000 CALL KEYGEN.00401557 ; \KEYGEN.00401557
004010CF . 803D F2224000>CMP BYTE PTR DS:[4022F2],0
004010D6 . 0F84 9F010000 JE KEYGEN.0040127B
004010DC . 803D F2224000>CMP BYTE PTR DS:[4022F2],1F
004010E3 . 0F87 92010000 JA KEYGEN.0040127B
004010E9 . 83C6 03 ADD ESI,3
004010EC . 68 F4224000 PUSH KEYGEN.004022F4 ; /Arg2 = 004022F4
004010F1 . 56 PUSH ESI ; |Arg1
004010F2 . E8 60040000 CALL KEYGEN.00401557 ; \KEYGEN.00401557
004010F7 . 803D F4224000>CMP BYTE PTR DS:[4022F4],0
004010FE . 0F84 77010000 JE KEYGEN.0040127B
00401104 . 803D F4224000>CMP BYTE PTR DS:[4022F4],0C
0040110B . 0F87 6A010000 JA KEYGEN.0040127B
00401111 . 83C6 03 ADD ESI,3
00401114 . 68 F6224000 PUSH KEYGEN.004022F6 ; /Arg2 = 004022F6
00401119 . 56 PUSH ESI ; |Arg1
0040111A . E8 38040000 CALL KEYGEN.00401557 ; \KEYGEN.00401557
0040111F . 803D F6224000>CMP BYTE PTR DS:[4022F6],0
00401126 . 74 05 JE SHORT KEYGEN.0040112D
00401128 . E8 62040000 CALL KEYGEN.0040158F
0040112D > BE 18204000 MOV ESI,KEYGEN.00402018
00401132 . 6A 03 PUSH 3 ; /Arg3 = 00000003
00401134 . 56 PUSH ESI ; |Arg2 => 00402018
00401135 . 56 PUSH ESI ; |Arg1 => 00402018
00401136 . E8 D9030000 CALL KEYGEN.00401514 ; \KEYGEN.00401514
0040113B . C705 00204000>MOV DWORD PTR DS:[402000],KEYGEN.0040231>; ASCII "2 (UNABLE TO READ|WRITE .INI FILE (codes.ini))"
00401145 . B9 08000000 MOV ECX,8
0040114A > 51 PUSH ECX
0040114B . 83F9 05 CMP ECX,5
0040114E . 77 18 JA SHORT KEYGEN.00401168
00401150 . 68 D4214000 PUSH KEYGEN.004021D4 ; /String2 = "INSITE_TOOLLEVEL_LICENSE"
00401155 . 68 8C214000 PUSH KEYGEN.0040218C ; |String1 = KEYGEN.0040218C
0040115A . E8 D9040000 CALL <JMP.&KERNEL32.lstrcpyA> ; \lstrcpyA
0040115F . C605 09224000>MOV BYTE PTR DS:[402209],1A
00401166 . EB 16 JMP SHORT KEYGEN.0040117E
00401168 > 68 EE214000 PUSH KEYGEN.004021EE ; /String2 = "INSITE_USAGECOUNT_LICENSE"
0040116D . 68 8C214000 PUSH KEYGEN.0040218C ; |String1 = KEYGEN.0040218C
00401172 . E8 C1040000 CALL <JMP.&KERNEL32.lstrcpyA> ; \lstrcpyA
00401177 . C605 09224000>MOV BYTE PTR DS:[402209],1B
0040117E > 59 POP ECX
0040117F . 51 PUSH ECX
00401180 . 0FB681 A02240>MOVZX EAX,BYTE PTR DS:[ECX+4022A0]
00401187 . A2 03234000 MOV BYTE PTR DS:[402303],AL
0040118C . 51 PUSH ECX ; /Arg1
0040118D . E8 11010000 CALL KEYGEN.004012A3 ; \KEYGEN.004012A3
00401192 . E8 EE010000 CALL KEYGEN.00401385
00401197 . 6A 06 PUSH 6 ; /Arg3 = 00000006
00401199 . 68 2C204000 PUSH KEYGEN.0040202C ; |Arg2 = 0040202C
0040119E . 68 24204000 PUSH KEYGEN.00402024 ; |Arg1 = 00402024
004011A3 . E8 31030000 CALL KEYGEN.004014D9 ; \KEYGEN.004014D9
004011A8 . BE 2C204000 MOV ESI,KEYGEN.0040202C
004011AD . BF 08204000 MOV EDI,KEYGEN.00402008 ; ASCII "----------------"
004011B2 . B9 04000000 MOV ECX,4
004011B7 > 51 PUSH ECX
004011B8 . B9 03000000 MOV ECX,3
004011BD . F2:A4 REPNE MOVS BYTE PTR ES:[EDI],BYTE PTR DS>
004011BF . 47 INC EDI
004011C0 . 59 POP ECX
004011C1 .^ E2 F4 LOOPD SHORT KEYGEN.004011B7
004011C3 . 59 POP ECX
004011C4 . 51 PUSH ECX
004011C5 . 0FB681 5D2140>MOVZX EAX,BYTE PTR DS:[ECX+40215D]
004011CC . A2 5C214000 MOV BYTE PTR DS:[40215C],AL
004011D1 . 803D 09224000>CMP BYTE PTR DS:[402209],1B
004011D8 . 74 10 JE SHORT KEYGEN.004011EA
004011DA . A2 06204000 MOV BYTE PTR DS:[402006],AL
004011DF . 66:C705 04204>MOV WORD PTR DS:[402004],3030
004011E8 . EB 0E JMP SHORT KEYGEN.004011F8
004011EA > A2 04204000 MOV BYTE PTR DS:[402004],AL
004011EF . 66:C705 05204>MOV WORD PTR DS:[402005],5353
004011F8 > 833D 04234000>CMP DWORD PTR DS:[402304],1
004011FF . 75 10 JNZ SHORT KEYGEN.00401211
00401201 . 66:C705 18204>MOV WORD PTR DS:[402018],3030
0040120A . C605 1A204000>MOV BYTE PTR DS:[40201A],30
00401211 > 68 3C204000 PUSH KEYGEN.0040203C ; /FileName = ""
00401216 . 68 04204000 PUSH KEYGEN.00402004 ; |String = "--------------------"
0040121B . 68 5C214000 PUSH KEYGEN.0040215C ; |Key = "0"
00401220 . A1 04234000 MOV EAX,DWORD PTR DS:[402304] ; |
00401225 . 8B0485 912240>MOV EAX,DWORD PTR DS:[EAX*4+402291] ; |
0040122C . 50 PUSH EAX ; |Section
0040122D . E8 00040000 CALL <JMP.&KERNEL32.WritePrivateProfileS>; \WritePrivateProfileStringA
00401232 . 59 POP ECX
00401233 . 85C0 TEST EAX,EAX
00401235 . 74 44 JE SHORT KEYGEN.0040127B
00401237 . E2 02 LOOPD SHORT KEYGEN.0040123B
00401239 . EB 05 JMP SHORT KEYGEN.00401240
0040123B >^ E9 0AFFFFFF JMP KEYGEN.0040114A
00401240 > C705 04234000>MOV DWORD PTR DS:[402304],1
0040124A . 803D 02234000>CMP BYTE PTR DS:[402302],1
00401251 . C605 02234000>MOV BYTE PTR DS:[402302],1
00401258 . B9 05000000 MOV ECX,5
0040125D .^ 0F85 E7FEFFFF JNZ KEYGEN.0040114A
00401263 . 90 NOP
00401264 . 90 NOP
00401265 . 90 NOP
00401266 . 90 NOP
00401267 . 90 NOP
00401268 . 90 NOP
00401269 . 90 NOP
0040126A . 90 NOP
0040126B . 90 NOP
0040126C . 90 NOP
0040126D . 90 NOP
0040126E . 90 NOP
0040126F . 90 NOP
00401270 . 90 NOP
00401271 . 90 NOP
00401272 . 90 NOP
00401273 . 90 NOP
00401274 . 90 NOP
00401275 . 90 NOP
00401276 . E9 A4030000 JMP KEYGEN.0040161F
0040127B > A1 00204000 MOV EAX,DWORD PTR DS:[402000]
00401280 . 50 PUSH EAX ; /String2 => NULL
00401281 . 68 14244000 PUSH KEYGEN.00402414 ; |String1 = KEYGEN.00402414
00401286 . E8 AD030000 CALL <JMP.&KERNEL32.lstrcpyA> ; \lstrcpyA
0040128B . 90 NOP
0040128C . 90 NOP
0040128D . 90 NOP
0040128E . 90 NOP
0040128F . 90 NOP
00401290 . 90 NOP
00401291 . 90 NOP
00401292 . 90 NOP
00401293 . 90 NOP
00401294 . 90 NOP
00401295 . 90 NOP
00401296 . 90 NOP
00401297 . 90 NOP
00401298 . 90 NOP
00401299 . 90 NOP
0040129A . 90 NOP
0040129B . 90 NOP
0040129C . 90 NOP
0040129D . 90 NOP
0040129E . E9 7C030000 JMP KEYGEN.0040161F
004012A3 /$ C8 000000 ENTER 0,0
004012A7 |. 53 PUSH EBX
004012A8 |. FC CLD
004012A9 |. 8B5D 08 MOV EBX,DWORD PTR SS:[EBP+8]
004012AC |. 8B0C9D 6D2240>MOV ECX,DWORD PTR DS:[EBX*4+40226D]
004012B3 |. 0FB605 092240>MOVZX EAX,BYTE PTR DS:[402209]
004012BA |. 8D80 8C214000 LEA EAX,DWORD PTR DS:[EAX+40218C]
004012C0 |. 51 PUSH ECX ; /String2
004012C1 |. 50 PUSH EAX ; |String1
004012C2 |. E8 71030000 CALL <JMP.&KERNEL32.lstrcpyA> ; \lstrcpyA
004012C7 |. 0FB68B 982240>MOVZX ECX,BYTE PTR DS:[EBX+402298]
004012CE |. 03C1 ADD EAX,ECX
004012D0 |. 803D 09224000>CMP BYTE PTR DS:[402209],1B
004012D7 |. 75 32 JNZ SHORT KEYGEN.0040130B
004012D9 |. 833D 04234000>CMP DWORD PTR DS:[402304],1
004012E0 |. 75 0F JNZ SHORT KEYGEN.004012F1
004012E2 |. C700 30313031 MOV DWORD PTR DS:[EAX],31303130
004012E8 |. C740 04 32303>MOV DWORD PTR DS:[EAX+4],30303032
004012EF |. EB 0C JMP SHORT KEYGEN.004012FD
004012F1 |> B9 F8224000 MOV ECX,KEYGEN.004022F8
004012F6 |. 51 PUSH ECX ; /String2 => ""
004012F7 |. 50 PUSH EAX ; |String1
004012F8 |. E8 3B030000 CALL <JMP.&KERNEL32.lstrcpyA> ; \lstrcpyA
004012FD |> 83C0 08 ADD EAX,8
00401300 |. 66:C700 5332 MOV WORD PTR DS:[EAX],3253
00401305 |. 40 INC EAX
00401306 |. 40 INC EAX
00401307 |. C600 53 MOV BYTE PTR DS:[EAX],53
0040130A |. 40 INC EAX
0040130B |> B9 01000000 MOV ECX,1
00401310 |. 833D 04234000>CMP DWORD PTR DS:[402304],1
00401317 |. 74 07 JE SHORT KEYGEN.00401320
00401319 |. 0FB60D F22240>MOVZX ECX,BYTE PTR DS:[4022F2]
00401320 |> 8808 MOV BYTE PTR DS:[EAX],CL
00401322 |. 40 INC EAX
00401323 |. 33C9 XOR ECX,ECX
00401325 |. 833D 04234000>CMP DWORD PTR DS:[402304],1
0040132C |. 75 10 JNZ SHORT KEYGEN.0040133E
0040132E |. 803D 09224000>CMP BYTE PTR DS:[402209],1B
00401335 |. 75 11 JNZ SHORT KEYGEN.00401348
00401337 |. B9 64000000 MOV ECX,64
0040133C |. EB 0A JMP SHORT KEYGEN.00401348
0040133E |> 0FB60D F62240>MOVZX ECX,BYTE PTR DS:[4022F6]
00401345 |. 83C1 64 ADD ECX,64
00401348 |> 8808 MOV BYTE PTR DS:[EAX],CL
0040134A |. 40 INC EAX
0040134B |. B9 01000000 MOV ECX,1
00401350 |. 833D 04234000>CMP DWORD PTR DS:[402304],1
00401357 |. 74 07 JE SHORT KEYGEN.00401360
00401359 |. 0FB60D F42240>MOVZX ECX,BYTE PTR DS:[4022F4]
00401360 |> 8B0C8D B12240>MOV ECX,DWORD PTR DS:[ECX*4+4022B1]
00401367 |. 8908 MOV DWORD PTR DS:[EAX],ECX
00401369 |. 83C0 03 ADD EAX,3
0040136C |. C700 87C5D073 MOV DWORD PTR DS:[EAX],73D0C587
00401372 |. C740 04 00000>MOV DWORD PTR DS:[EAX+4],0
00401379 |. C740 08 00000>MOV DWORD PTR DS:[EAX+8],0
00401380 |. 5B POP EBX
00401381 |. C9 LEAVE
00401382 \. C2 0400 RETN 4
00401385 /$ C8 040000 ENTER 4,0
00401389 |. C705 24204000>MOV DWORD PTR DS:[402024],0
00401393 |. C705 28204000>MOV DWORD PTR DS:[402028],0
0040139D |. C645 FC 00 MOV BYTE PTR SS:[EBP-4],0
004013A1 |. 0FB60D 032340>MOVZX ECX,BYTE PTR DS:[402303]
004013A8 |> 51 /PUSH ECX
004013A9 |. 0FB645 FC |MOVZX EAX,BYTE PTR SS:[EBP-4]
004013AD |. 40 |INC EAX
004013AE |. 8D34C5 7E2140>|LEA ESI,DWORD PTR DS:[EAX*8+40217E]
004013B5 |. B9 08000000 |MOV ECX,8
004013BA |. FD |STD
004013BB |> AC |/LODS BYTE PTR DS:[ESI]
004013BC |. 3081 23204000 ||XOR BYTE PTR DS:[ECX+402023],AL
004013C2 |.^ E2 F7 |\LOOPD SHORT KEYGEN.004013BB
004013C4 |. FC |CLD
004013C5 |. 807D FC 00 |CMP BYTE PTR SS:[EBP-4],0
004013C9 |. 75 16 |JNZ SHORT KEYGEN.004013E1
004013CB |. B8 16F312D9 |MOV EAX,D912F316
004013D0 |. 3105 24204000 |XOR DWORD PTR DS:[402024],EAX
004013D6 |. B8 815991FD |MOV EAX,FD915981
004013DB |. 3105 28204000 |XOR DWORD PTR DS:[402028],EAX
004013E1 |> FE45 FC |INC BYTE PTR SS:[EBP-4] ; |
004013E4 |. E8 54000000 |CALL KEYGEN.0040143D ; \KEYGEN.0040143D
004013E9 |. 59 |POP ECX
004013EA |.^ E2 BC \LOOPD SHORT KEYGEN.004013A8
004013EC |. 0FB605 2B2040>MOVZX EAX,BYTE PTR DS:[40202B]
004013F3 |. 50 PUSH EAX ; /Arg1
004013F4 |. E8 24000000 CALL KEYGEN.0040141D ; \KEYGEN.0040141D
004013F9 |. 0005 24204000 ADD BYTE PTR DS:[402024],AL
004013FF |. 0FB605 2A2040>MOVZX EAX,BYTE PTR DS:[40202A]
00401406 |. 50 PUSH EAX ; /Arg1
00401407 |. E8 11000000 CALL KEYGEN.0040141D ; \KEYGEN.0040141D
0040140C |. 0005 25204000 ADD BYTE PTR DS:[402025],AL
00401412 |. 66:C705 2A204>MOV WORD PTR DS:[40202A],0
0040141B |. C9 LEAVE
0040141C \. C3 RETN
0040141D /$ C8 000000 ENTER 0,0
00401421 |. 33C0 XOR EAX,EAX
00401423 |. 33D2 XOR EDX,EDX
00401425 |. 0FB65D 08 MOVZX EBX,BYTE PTR SS:[EBP+8]
00401429 |. B9 08000000 MOV ECX,8
0040142E |. 51 PUSH ECX
0040142F |. F8 CLC
00401430 |> 0FA3D3 BT EBX,EDX
00401433 |. D1D0 RCL EAX,1
00401435 |. 42 INC EDX
00401436 |.^ E2 F8 LOOPD SHORT KEYGEN.00401430
00401438 |. F8 CLC
00401439 |. C9 LEAVE
0040143A \. C2 0400 RETN 4
0040143D /$ C8 100000 ENTER 10,0
00401441 |. 56 PUSH ESI
00401442 |. FC CLD
00401443 |. BE 24204000 MOV ESI,KEYGEN.00402024
00401448 |. 33C0 XOR EAX,EAX
0040144A |. AC LODS BYTE PTR DS:[ESI]
0040144B |. 8845 FC MOV BYTE PTR SS:[EBP-4],AL
0040144E |. AC LODS BYTE PTR DS:[ESI]
0040144F |. 8845 F8 MOV BYTE PTR SS:[EBP-8],AL
00401452 |. AC LODS BYTE PTR DS:[ESI]
00401453 |. 8845 F4 MOV BYTE PTR SS:[EBP-C],AL
00401456 |. AC LODS BYTE PTR DS:[ESI]
00401457 |. 8845 F0 MOV BYTE PTR SS:[EBP-10],AL
0040145A |. 0FB605 282040>MOVZX EAX,BYTE PTR DS:[402028]
00401461 |. 0205 2B204000 ADD AL,BYTE PTR DS:[40202B]
00401467 |. A2 24204000 MOV BYTE PTR DS:[402024],AL
0040146C |. 0FB605 292040>MOVZX EAX,BYTE PTR DS:[402029]
00401473 |. 0245 F0 ADD AL,BYTE PTR SS:[EBP-10]
00401476 |. A2 25204000 MOV BYTE PTR DS:[402025],AL
0040147B |. 0FB605 282040>MOVZX EAX,BYTE PTR DS:[402028]
00401482 |. 0245 F4 ADD AL,BYTE PTR SS:[EBP-C]
00401485 |. F6D0 NOT AL
00401487 |. A2 26204000 MOV BYTE PTR DS:[402026],AL
0040148C |. 0FB605 292040>MOVZX EAX,BYTE PTR DS:[402029]
00401493 |. 0245 FC ADD AL,BYTE PTR SS:[EBP-4]
00401496 |. A2 27204000 MOV BYTE PTR DS:[402027],AL
0040149B |. 0FB605 2A2040>MOVZX EAX,BYTE PTR DS:[40202A]
004014A2 |. 0245 F0 ADD AL,BYTE PTR SS:[EBP-10]
004014A5 |. A2 28204000 MOV BYTE PTR DS:[402028],AL
004014AA |. 0FB605 2A2040>MOVZX EAX,BYTE PTR DS:[40202A]
004014B1 |. 0245 F8 ADD AL,BYTE PTR SS:[EBP-8]
004014B4 |. F6D0 NOT AL
004014B6 |. A2 29204000 MOV BYTE PTR DS:[402029],AL
004014BB |. 0FB605 2B2040>MOVZX EAX,BYTE PTR DS:[40202B]
004014C2 |. 0245 FC ADD AL,BYTE PTR SS:[EBP-4]
004014C5 |. A2 2A204000 MOV BYTE PTR DS:[40202A],AL
004014CA |. 0FB645 F8 MOVZX EAX,BYTE PTR SS:[EBP-8]
004014CE |. 0245 F4 ADD AL,BYTE PTR SS:[EBP-C]
004014D1 |. A2 2B204000 MOV BYTE PTR DS:[40202B],AL
004014D6 |. 5E POP ESI
004014D7 |. C9 LEAVE
004014D8 \. C3 RETN
004014D9 /$ C8 000000 ENTER 0,0
004014DD |. FC CLD
004014DE |. 33C0 XOR EAX,EAX
004014E0 |. 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8]
004014E3 |. 8B7D 0C MOV EDI,DWORD PTR SS:[EBP+C]
004014E6 |. 8B4D 10 MOV ECX,DWORD PTR SS:[EBP+10]
004014E9 |> AC /LODS BYTE PTR DS:[ESI]
004014EA |. 51 |PUSH ECX
004014EB |. B9 02000000 |MOV ECX,2
004014F0 |. 8AD0 |MOV DL,AL
004014F2 |. C0E8 04 |SHR AL,4
004014F5 |> 3C 0A |/CMP AL,0A
004014F7 |. 73 04 ||JNB SHORT KEYGEN.004014FD
004014F9 |. 04 30 ||ADD AL,30
004014FB |. EB 06 ||JMP SHORT KEYGEN.00401503
004014FD |> 3C 10 ||CMP AL,10
004014FF |. 73 02 ||JNB SHORT KEYGEN.00401503
00401501 |. 04 37 ||ADD AL,37
00401503 |> AA ||STOS BYTE PTR ES:[EDI]
00401504 |. 8AC2 ||MOV AL,DL
00401506 |. 24 0F ||AND AL,0F
00401508 |.^ E2 EB |\LOOPD SHORT KEYGEN.004014F5
0040150A |. 59 |POP ECX
0040150B |.^ E2 DC \LOOPD SHORT KEYGEN.004014E9
0040150D |. C607 00 MOV BYTE PTR DS:[EDI],0
00401510 |. C9 LEAVE
00401511 \. C2 0C00 RETN 0C
00401514 /$ C8 000000 ENTER 0,0
00401518 |. FC CLD
00401519 |. 33C0 XOR EAX,EAX
0040151B |. 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8]
0040151E |. 8B7D 0C MOV EDI,DWORD PTR SS:[EBP+C]
00401521 |. 8B4D 10 MOV ECX,DWORD PTR SS:[EBP+10]
00401524 |> AC /LODS BYTE PTR DS:[ESI]
00401525 |. 83F8 00 |CMP EAX,0
00401528 |. 72 0A |JB SHORT KEYGEN.00401534
0040152A |. 83F8 09 |CMP EAX,9
0040152D |. 77 05 |JA SHORT KEYGEN.00401534
0040152F |. 83C0 30 |ADD EAX,30
00401532 |. EB 1C |JMP SHORT KEYGEN.00401550
00401534 |> 83F8 0A |CMP EAX,0A ; Switch (cases A..23)
00401537 |. 72 0A |JB SHORT KEYGEN.00401543
00401539 |. 83F8 23 |CMP EAX,23
0040153C |. 77 05 |JA SHORT KEYGEN.00401543
0040153E |. 83C0 37 |ADD EAX,37
00401541 |. EB 0D |JMP SHORT KEYGEN.00401550
00401543 |> 83F8 24 |CMP EAX,24 ; Switch (cases 24..3D)
00401546 |. 72 08 |JB SHORT KEYGEN.00401550
00401548 |. 83F8 3D |CMP EAX,3D
0040154B |. 77 03 |JA SHORT KEYGEN.00401550
0040154D |. 83C0 3D |ADD EAX,3D ; Cases 24 ('$'),25 ('%'),26 ('&'),27 ('''),28 ('('),29 (')'),2A ('*'),2B ('+'),2C (','),2D ('-'),2E ('.'),2F ('/'),30 ('0'),31 ('1'),32 ('2'),33 ('3'),34 ('4'),35 ('5'),36 ('6'),37 ('7')... of switch 00401543
00401550 |> AA |STOS BYTE PTR ES:[EDI] ; Default case of switch 00401543
00401551 |.^ E2 D1 \LOOPD SHORT KEYGEN.00401524
00401553 |. C9 LEAVE
00401554 \. C2 0C00 RETN 0C
00401557 /$ C8 000000 ENTER 0,0
0040155B |. 50 PUSH EAX
0040155C |. 53 PUSH EBX
0040155D |. 56 PUSH ESI
0040155E |. B9 02000000 MOV ECX,2
00401563 |. 33DB XOR EBX,EBX
00401565 |. 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8]
00401568 |. 8B7D 0C MOV EDI,DWORD PTR SS:[EBP+C]
0040156B |. C607 00 MOV BYTE PTR DS:[EDI],0
0040156E |> AC /LODS BYTE PTR DS:[ESI]
0040156F |. 3C 30 |CMP AL,30
00401571 |. 7C 06 |JL SHORT KEYGEN.00401579
00401573 |. 3C 39 |CMP AL,39
00401575 |. 77 02 |JA SHORT KEYGEN.00401579
00401577 |. 2C 30 |SUB AL,30
00401579 |> 93 |XCHG EAX,EBX
0040157A |. BA 0A000000 |MOV EDX,0A
0040157F |. F7E2 |MUL EDX
00401581 |. 03D8 |ADD EBX,EAX
00401583 |.^ E2 E9 \LOOPD SHORT KEYGEN.0040156E
00401585 |. 8BC3 MOV EAX,EBX
00401587 |. AA STOS BYTE PTR ES:[EDI]
00401588 |. 5E POP ESI
00401589 |. 5B POP EBX
0040158A |. 58 POP EAX
0040158B |. C9 LEAVE
0040158C \. C2 0800 RETN 8
0040158F /$ C8 040000 ENTER 4,0
00401593 |. C745 FC 00000>MOV DWORD PTR SS:[EBP-4],0
0040159A |. 0FB605 F62240>MOVZX EAX,BYTE PTR DS:[4022F6]
004015A1 |. 8BC8 MOV ECX,EAX
004015A3 |. 05 D0070000 ADD EAX,7D0
004015A8 |. 50 PUSH EAX
004015A9 |. 48 DEC EAX
004015AA |> 50 /PUSH EAX
004015AB |. BB 04000000 |MOV EBX,4
004015B0 |. 33D2 |XOR EDX,EDX
004015B2 |. F7F3 |DIV EBX
004015B4 |. 85D2 |TEST EDX,EDX
004015B6 |. 75 03 |JNZ SHORT KEYGEN.004015BB
004015B8 |. FF45 FC |INC DWORD PTR SS:[EBP-4]
004015BB |> 8145 FC 6D010>|ADD DWORD PTR SS:[EBP-4],16D
004015C2 |. 58 |POP EAX
004015C3 |. 48 |DEC EAX
004015C4 |.^ E2 E4 \LOOPD SHORT KEYGEN.004015AA
004015C6 |. 58 POP EAX
004015C7 |. BB 04000000 MOV EBX,4
004015CC |. 33D2 XOR EDX,EDX
004015CE |. F7F3 DIV EBX
004015D0 |. 85D2 TEST EDX,EDX
004015D2 |. 75 07 JNZ SHORT KEYGEN.004015DB
004015D4 |. C605 E6224000>MOV BYTE PTR DS:[4022E6],1D
004015DB |> 33C0 XOR EAX,EAX
004015DD |. 0FB70D F42240>MOVZX ECX,WORD PTR DS:[4022F4]
004015E4 |. 49 DEC ECX
004015E5 |. 85C9 TEST ECX,ECX
004015E7 |. 74 0B JE SHORT KEYGEN.004015F4
004015E9 |> 0FB699 E52240>/MOVZX EBX,BYTE PTR DS:[ECX+4022E5]
004015F0 |. 03C3 |ADD EAX,EBX
004015F2 |.^ E2 F5 \LOOPD SHORT KEYGEN.004015E9
004015F4 |> 0FB71D F22240>MOVZX EBX,WORD PTR DS:[4022F2]
004015FB |. 4B DEC EBX
004015FC |. 03C3 ADD EAX,EBX
004015FE |. 0345 FC ADD EAX,DWORD PTR SS:[EBP-4]
00401601 |. BF 18204000 MOV EDI,KEYGEN.00402018
00401606 |. B9 03000000 MOV ECX,3
0040160B |. FC CLD
0040160C |> 8B1C8D A52240>/MOV EBX,DWORD PTR DS:[ECX*4+4022A5]
00401613 |. 33D2 |XOR EDX,EDX
00401615 |. F7F3 |DIV EBX
00401617 |. AA |STOS BYTE PTR ES:[EDI]
00401618 |. 8BC2 |MOV EAX,EDX
0040161A |.^ E2 F0 \LOOPD SHORT KEYGEN.0040160C
0040161C |. F8 CLC
0040161D |. C9 LEAVE
0040161E \. C3 RETN
0040161F > 6A 00 PUSH 0 ; /ExitCode = 0
00401621 . E8 24000000 CALL <JMP.&KERNEL32.ExitProcess> ; \ExitProcess
00401626 .- FF25 60304000 JMP DWORD PTR DS:[<&USER32.MessageBoxA>] ; USER32.MessageBoxA
0040162C $- FF25 68304000 JMP DWORD PTR DS:[<&KERNEL32.GetPrivateP>; kernel32.GetPrivateProfileStringA
00401632 $- FF25 6C304000 JMP DWORD PTR DS:[<&KERNEL32.WritePrivat>; kernel32.WritePrivateProfileStringA
00401638 $- FF25 70304000 JMP DWORD PTR DS:[<&KERNEL32.lstrcpyA>] ; kernel32.lstrcpyA
0040163E .- FF25 74304000 JMP DWORD PTR DS:[<&KERNEL32.lstrlenA>] ; kernel32.lstrlenA
00401644 $- FF25 78304000 JMP DWORD PTR DS:[<&KERNEL32.GetCurrentD>; kernel32.GetCurrentDirectoryA
0040164A .- FF25 7C304000 JMP DWORD PTR DS:[<&KERNEL32.ExitProcess>; kernel32.ExitProcess
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课