首页
社区
课程
招聘
[旧帖] 请把下面的反向个C++源代码,学学看看, 0.00雪花
发表于: 2010-1-16 22:31 7827

[旧帖] 请把下面的反向个C++源代码,学学看看, 0.00雪花

2010-1-16 22:31
7827
请把下面的反向个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直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (20)
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
老大,工作量也太大了吧。。。
2010-1-16 22:33
0
雪    币: 202
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
呵呵,这里高手多啊,就看高手想不想玩了。

/* This file has been generated by the Hex-Rays decompiler.
   Copyright (c) 2009 Hex-Rays <info@hex-rays.com>

   Detected compiler: Visual C++
*/

#include <windows.h>
//#include <defs.h>


//-------------------------------------------------------------------------
// Data declarations

extern LPCSTR lpString2; // idb
extern char String[]; // idb
extern char byte_402006; // weak
extern char asc_402008[17]; // weak
extern char byte_40201A; // weak
extern char byte_402023[]; // weak
extern int dword_402024; // weak
extern int dword_402028; // weak
extern _UNKNOWN unk_40202C; // weak
extern CHAR Buffer; // idb
extern char AppName[]; // idb
extern char aExpire[]; // idb
extern char KeyName[]; // idb
extern const CHAR byte_40215C; // idb
extern char byte_40215D[]; // weak
extern char byte_402167[24]; // idb
extern char ReturnedString[9]; // idb
extern char String1[]; // idb
extern char aInsite_toollev[24]; // idb
extern char aInsite_usageco[25]; // idb
extern char byte_402209; // weak
extern LPCSTR dword_40226D; // idb
extern LPCSTR lpAppName; // idb
extern char byte_402298[]; // weak
extern char byte_4022A0[]; // weak
extern int dword_4022A5[]; // weak
extern int dword_4022B1[]; // weak
extern char byte_4022E5[]; // weak
extern char byte_4022E6; // weak
extern __int16 word_4022F2; // weak
extern __int16 word_4022F4; // weak
extern char byte_4022F6; // weak
extern char dword_4022F8[]; // idb
extern __int16 word_4022FE; // weak
extern char byte_402302; // weak
extern char byte_402303; // weak
extern int dword_402304; // weak
extern char String2[]; // idb
extern char a2UnableToReadW[47]; // weak
extern char a3IncorrectDate[49]; // weak
extern char asc_402414[]; // idb

//-------------------------------------------------------------------------
// Function declarations

void __cdecl start();
int __stdcall sub_4012A3(int a1);
__int64 __cdecl sub_401385();
__int64 __stdcall sub_40141D(unsigned __int8 a1);
char __cdecl sub_40143D();
unsigned __int8 __stdcall sub_4014D9(int a1, int a2, int a3);
char __stdcall sub_401514(int a1, int a2, int a3);
// int __userpurge sub_401557<eax>(int a1<eax>, int a2, int a3);
unsigned int __cdecl sub_40158F();
// DWORD __stdcall GetPrivateProfileStringA(LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpDefault, LPSTR lpReturnedString, DWORD nSize, LPCSTR lpFileName);
// BOOL __stdcall WritePrivateProfileStringA(LPCSTR lpAppName, LPCSTR lpKeyName, LPCSTR lpString, LPCSTR lpFileName);
// LPSTR __stdcall lstrcpyA(LPSTR lpString1, LPCSTR lpString2);
// DWORD __stdcall GetCurrentDirectoryA(DWORD nBufferLength, LPSTR lpBuffer);
// void __stdcall ExitProcess(UINT uExitCode);


//----- (00401000) --------------------------------------------------------
void __cdecl start()
{
  DWORD v0; // eax@1
  DWORD v1; // eax@5
  int v2; // eax@7
  int v3; // eax@7
  int v4; // eax@9
  int v5; // ecx@13
  signed int v6; // ecx@17
  void *v7; // edi@17
  const void *v8; // esi@17
  signed int v9; // ST10_4@18
  char v10; // al@19
  char v11; // zf@28
  int v12; // [sp-4h] [bp-4h]@14

  v0 = GetCurrentDirectoryA(0x100u, &Buffer);
  if ( v0 )
  {
    if ( *(&Buffer + v0) != 92 )
      *(&Buffer + v0++) = 92;
    lstrcpyA(&Buffer + v0, "CODES.INI");
    lpString2 = "2 (UNABLE TO READ|WRITE .INI FILE (codes.ini))";
    if ( GetPrivateProfileStringA("PCID", L"0", &KeyName[2], ReturnedString, 9u, &Buffer) )
    {
      v1 = GetPrivateProfileStringA("EXPIRE", L"0", &KeyName[2], byte_402167, 0x10u, &Buffer);
      if ( v1 )
      {
        lpString2 = "3 (INCORRECT DATE IN codes.ini PLEASE CHECK IT!)";
        if ( v1 == 8 )
        {
          v3 = *(unsigned __int16 *)byte_402167 << 16;
          LOWORD(v3) = *(_WORD *)&byte_402167[3];
          *(_DWORD *)dword_4022F8 = v3;
          word_4022FE = *(_WORD *)&byte_402167[6];
          v2 = sub_401557((unsigned __int16)word_4022FE, (int)byte_402167, (int)&word_4022F2);
          if ( (_BYTE)word_4022F2 )
          {
            if ( (_BYTE)word_4022F2 <= 0x1Fu )
            {
              v4 = sub_401557(v2, (int)&byte_402167[3], (int)&word_4022F4);
              if ( (_BYTE)word_4022F4 )
              {
                if ( (_BYTE)word_4022F4 <= 0xCu )
                {
                  sub_401557(v4, (int)&byte_402167[6], (int)&byte_4022F6);
                  if ( byte_4022F6 )
                    sub_40158F();
                  sub_401514((int)&asc_402008[16], (int)&asc_402008[16], 3);
                  lpString2 = "2 (UNABLE TO READ|WRITE .INI FILE (codes.ini))";
                  v5 = 8;
                  while ( 1 )
                  {
                    v12 = v5;
                    if ( (unsigned int)v5 > 5 )
                    {
                      lstrcpyA(String1, "INSITE_USAGECOUNT_LICENSE");
                      byte_402209 = 27;
                    }
                    else
                    {
                      lstrcpyA(String1, "INSITE_TOOLLEVEL_LICENSE");
                      byte_402209 = 26;
                    }
                    byte_402303 = byte_4022A0[v12];
                    sub_4012A3(v12);
                    sub_401385();
                    sub_4014D9((int)&dword_402024, (int)&unk_40202C, 6);
                    v8 = &unk_40202C;
                    v7 = "----------------";
                    v6 = 4;
                    do
                    {
                      v9 = v6;
                      memcpy(v7, v8, 3u);
                      v8 = (char *)v8 + 3;
                      v7 = (char *)v7 + 4;
                      --v6;
                    }
                    while ( v9 != 1 );
                    v10 = byte_40215D[v12];
                    byte_40215C = byte_40215D[v12];
                    if ( byte_402209 == 27 )
                    {
                      String[0] = v10;
                      *(_WORD *)&String[1] = 21331;
                    }
                    else
                    {
                      byte_402006 = v10;
                      *(_WORD *)String = 12336;
                    }
                    if ( dword_402304 == 1 )
                    {
                      *(_WORD *)&asc_402008[16] = 12336;
                      byte_40201A = 48;
                    }
                    if ( !WritePrivateProfileStringA((&lpAppName)[4 * dword_402304], &byte_40215C, String, &Buffer) )
                      break;
                    v5 = v12 - 1;
                    if ( v12 == 1 )
                    {
                      dword_402304 = 1;
                      v11 = byte_402302 == 1;
                      byte_402302 = 1;
                      v5 = 5;
                      if ( v11 )
                        goto LABEL_31;
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
  lstrcpyA("                                                  ", lpString2);
LABEL_31:
  ExitProcess(0);
}
// 402006: using guessed type char byte_402006;
// 40201A: using guessed type char byte_40201A;
// 402024: using guessed type int dword_402024;
// 402209: using guessed type char byte_402209;
// 4022F2: using guessed type __int16 word_4022F2;
// 4022F4: using guessed type __int16 word_4022F4;
// 4022F6: using guessed type char byte_4022F6;
// 4022FE: using guessed type __int16 word_4022FE;
// 402302: using guessed type char byte_402302;
// 402303: using guessed type char byte_402303;
// 402304: using guessed type int dword_402304;

//----- (004012A3) --------------------------------------------------------
int __stdcall sub_4012A3(int a1)
{
  LPSTR v1; // eax@1
  int v2; // eax@5
  char v3; // cl@6
  int v4; // eax@8
  int v5; // ecx@8
  int v6; // eax@12
  signed int v7; // ecx@12
  int result; // eax@14

  v1 = &lstrcpyA(&String1[(unsigned __int8)byte_402209], (&dword_40226D)[4 * a1])[(unsigned __int8)byte_402298[a1]];
  if ( byte_402209 == 27 )
  {
    if ( dword_402304 == 1 )
    {
      *(_DWORD *)v1 = 825241904;
      *((_DWORD *)v1 + 1) = 808464434;
    }
    else
    {
      v1 = lstrcpyA(v1, dword_4022F8);
    }
    v2 = (int)(v1 + 8);
    *(_WORD *)v2 = 12883;
    v2 += 2;
    *(_BYTE *)v2 = 83;
    v1 = (LPSTR)(v2 + 1);
  }
  v3 = 1;
  if ( dword_402304 != 1 )
    v3 = word_4022F2;
  *v1 = v3;
  v4 = (int)(v1 + 1);
  LOBYTE(v5) = 0;
  if ( dword_402304 == 1 )
  {
    if ( byte_402209 == 27 )
      LOBYTE(v5) = 100;
  }
  else
  {
    v5 = (unsigned __int8)byte_4022F6 + 100;
  }
  *(_BYTE *)v4 = v5;
  v6 = v4 + 1;
  v7 = 1;
  if ( dword_402304 != 1 )
    v7 = (unsigned __int8)word_4022F4;
  *(_DWORD *)v6 = dword_4022B1[v7];
  result = v6 + 3;
  *(_DWORD *)result = 1943061895;
  *(_DWORD *)(result + 4) = 0;
  *(_DWORD *)(result + 8) = 0;
  return result;
}
// 402209: using guessed type char byte_402209;
// 4022B1: using guessed type int dword_4022B1[];
// 4022F2: using guessed type __int16 word_4022F2;
// 4022F4: using guessed type __int16 word_4022F4;
// 4022F6: using guessed type char byte_4022F6;
// 402304: using guessed type int dword_402304;

//----- (00401385) --------------------------------------------------------
__int64 __cdecl sub_401385()
{
  int v0; // ecx@1
  signed int v1; // ecx@2
  int v2; // esi@2
  char v3; // al@3
  __int64 result; // qax@7
  int v5; // [sp-4h] [bp-8h]@2
  unsigned __int8 v6; // [sp+0h] [bp-4h]@1

  dword_402024 = 0;
  dword_402028 = 0;
  v6 = 0;
  v0 = (unsigned __int8)byte_402303;
  do
  {
    v5 = v0;
    v2 = 8 * (v6 + 1) + 4202878;
    v1 = 8;
    do
    {
      v3 = *(_BYTE *)v2++;
      byte_402023[v1] ^= v3;
      --v1;
    }
    while ( v1 );
    if ( !v6 )
    {
      dword_402024 ^= 0xD912F316u;
      dword_402028 ^= 0xFD915981u;
    }
    ++v6;
    sub_40143D();
    v0 = v5 - 1;
  }
  while ( v5 != 1 );
  LOBYTE(dword_402024) = sub_40141D(BYTE3(dword_402028)) + dword_402024;
  result = sub_40141D(BYTE2(dword_402028));
  BYTE1(dword_402024) += result;
  HIWORD(dword_402028) = 0;
  return result;
}
// 402024: using guessed type int dword_402024;
// 402028: using guessed type int dword_402028;
// 402303: using guessed type char byte_402303;

//----- (0040141D) --------------------------------------------------------
__int64 __stdcall sub_40141D(unsigned __int8 a1)
{
  __int64 result; // qax@1
  signed int v2; // ecx@1

  result = 0i64;
  _EBX = a1;
  v2 = 8;
  do
  {
    __asm { bt      ebx, edx }
    LODWORD(result) = __RCL__(result, _CF);
    result += 4294967296i64;
    --v2;
  }
  while ( v2 );
  return result;
}

//----- (0040143D) --------------------------------------------------------
char __cdecl sub_40143D()
{
  char result; // al@1
  char v1; // ST10_1@1
  char v2; // ST0C_1@1
  char v3; // ST08_1@1
  char v4; // ST04_1@1

  v1 = dword_402024;
  v2 = BYTE1(dword_402024);
  v3 = BYTE2(dword_402024);
  v4 = BYTE3(dword_402024);
  LOBYTE(dword_402024) = BYTE3(dword_402028) + dword_402028;
  BYTE1(dword_402024) = v4 + BYTE1(dword_402028);
  BYTE2(dword_402024) = ~(v3 + dword_402028);
  BYTE3(dword_402024) = v1 + BYTE1(dword_402028);
  LOBYTE(dword_402028) = v4 + BYTE2(dword_402028);
  BYTE1(dword_402028) = ~(v2 + BYTE2(dword_402028));
  BYTE2(dword_402028) = v1 + BYTE3(dword_402028);
  result = v3 + v2;
  BYTE3(dword_402028) = v3 + v2;
  return result;
}
// 402024: using guessed type int dword_402024;
// 402028: using guessed type int dword_402028;

//----- (004014D9) --------------------------------------------------------
unsigned __int8 __stdcall sub_4014D9(int a1, int a2, int a3)
{
  int v3; // ecx@1
  int v4; // edi@1
  int v5; // esi@1
  unsigned __int8 v6; // al@2
  unsigned __int8 result; // al@2
  unsigned __int8 v8; // dl@2
  signed int v9; // ecx@2
  int v10; // [sp-4h] [bp-4h]@2

  v5 = a1;
  v4 = a2;
  v3 = a3;
  do
  {
    v6 = *(_BYTE *)v5++;
    v10 = v3;
    v9 = 2;
    v8 = v6;
    result = v6 >> 4;
    do
    {
      if ( result >= 0xAu )
      {
        if ( result < 0x10u )
          result += 55;
      }
      else
      {
        result += 48;
      }
      *(_BYTE *)v4++ = result;
      result = v8 & 0xF;
      --v9;
    }
    while ( v9 );
    v3 = v10 - 1;
  }
  while ( v10 != 1 );
  *(_BYTE *)v4 = 0;
  return result;
}

//----- (00401514) --------------------------------------------------------
char __stdcall sub_401514(int a1, int a2, int a3)
{
  unsigned int v3; // eax@1
  int v4; // ecx@1
  int v5; // edi@1
  int v6; // esi@1

  v3 = 0;
  v6 = a1;
  v5 = a2;
  v4 = a3;
  do
  {
    LOBYTE(v3) = *(_BYTE *)v6++;
    if ( v3 > 9 )
    {
      if ( v3 < 0xA || v3 > 0x23 )
      {
        if ( v3 >= 0x24 )
        {
          if ( v3 <= 0x3D )
            v3 += 61;
        }
      }
      else
      {
        v3 += 55;
      }
    }
    else
    {
      v3 += 48;
    }
    *(_BYTE *)v5++ = v3;
    --v4;
  }
  while ( v4 );
  return v3;
}

//----- (00401557) --------------------------------------------------------
int __userpurge sub_401557<eax>(int a1<eax>, int a2, int a3)
{
  signed int v3; // ecx@1
  int v4; // ebx@1
  int v5; // esi@1
  int v6; // et0@5
  int v8; // ST08_4@6

  v3 = 2;
  v4 = 0;
  v5 = a2;
  *(_BYTE *)a3 = 0;
  do
  {
    LOBYTE(a1) = *(_BYTE *)v5++;
    if ( (_BYTE)a1 >= 48 )
    {
      if ( (_BYTE)a1 <= 0x39u )
        LOBYTE(a1) = a1 - 48;
    }
    v6 = a1;
    a1 = 10 * v4;
    v4 = 10 * v4 + v6;
    --v3;
  }
  while ( v3 );
  *(_BYTE *)a3 = v4;
  return v8;
}

//----- (0040158F) --------------------------------------------------------
unsigned int __cdecl sub_40158F()
{
  unsigned int v0; // eax@1
  int v1; // ecx@1
  int v2; // eax@7
  int v3; // ecx@7
  unsigned int result; // eax@9
  signed int v5; // ecx@9
  signed int v6; // edi@9
  unsigned int v7; // ebx@10
  int v8; // [sp+0h] [bp-4h]@1

  v8 = 0;
  v1 = (unsigned __int8)byte_4022F6;
  v0 = (unsigned __int8)byte_4022F6 + 1999;
  do
  {
    if ( !(v0 % 4) )
      ++v8;
    v8 += 365;
    --v0;
    --v1;
  }
  while ( v1 );
  if ( !(((unsigned int)(unsigned __int8)byte_4022F6 + 2000) % 4) )
    byte_4022E6 = 29;
  v2 = 0;
  v3 = (unsigned __int16)word_4022F4 - 1;
  if ( (unsigned __int16)word_4022F4 != 1 )
  {
    do
      v2 += (unsigned __int8)byte_4022E5[v3--];
    while ( v3 );
  }
  result = v8 + (unsigned __int16)word_4022F2 - 1 + v2;
  v6 = 4202520;
  v5 = 3;
  do
  {
    v7 = dword_4022A5[v5];
    *(_BYTE *)v6++ = result / v7;
    result %= v7;
    --v5;
  }
  while ( v5 );
  return result;
}
// 4022A5: using guessed type int dword_4022A5[];
// 4022E6: using guessed type char byte_4022E6;
// 4022F2: using guessed type __int16 word_4022F2;
// 4022F4: using guessed type __int16 word_4022F4;
// 4022F6: using guessed type char byte_4022F6;

// ALL OK, 9 function(s) have been successfully decompiled
2010-1-16 22:41
0
雪    币: 202
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
该软件是Flexlm保护的,我跟出SEED是:

03A4B828  00000066  f...
03A4B82C  0055007C  |.U.
03A4B830  72F6C35B---------job+08
03A4B834  32FD906A---------job+0c
03A4B838  23376EED---------job+10
03A4B83C  00000000  ....
03A4B840  00000000  ....

0A3EECE4  00000004
0A3EECE8  1A828121------ data[0]
0A3EECEC  3E012BB6------ data[0]
0A3EECF0  C444EFFC  D
0A3EECF4  84FCC5EA  昱鼊
0A3EECF8  83328001  €2
0A3EECFC  C1300740  @0
0A3EED00  00000000  ....

seed1:d912f316
seed2:fd915981

下面是我做的无限授权文件,不是用的注册码。呵呵,也能用。不过我的这个授权是不限电脑的。

<LicenseFile Version="70300226">
	<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="CA715CA8DC82" IsValid="" ID="{27AF75ED-20D9-11D1-B1CE-00805FC1270E}" Data="[Basic]RSGNR" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="1"/>
	<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="3A823EA8784A" IsValid="" ID="{94B65A8A-2016-41E4-BF27-0F8B0815A2C2}" Data="[Lite]RSGNR|OBDRSGNR" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
	<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="F84D48D2706F" IsValid="" ID="{D272DBD7-6452-41B6-8CFF-A368799CCF78}" Data="[Lite]RSGNR|OBDRSGNR|OBD" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
	<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="BA04C1FD7429" IsValid="" ID="{7809FD4F-7979-4EE9-B65E-804506281225}" Data="[Lite]" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
	<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="E25070CDAFC3" IsValid="" ID="{3E5C0E86-1BDA-4EC6-B71A-9BFBF1C41942}" Data="[Lite]PreProdSupp|NProdSupp|NOBDRSGR|NOBD" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
	<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="5EA7001E5A7C" IsValid="" ID="{0E0EBCFB-155C-412C-BB5C-36AF00552664}" Data="[Lite]RSGNR" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
	<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="4CF80BA7424A" IsValid="" ID="{32D4EFFB-A380-4969-8AD3-6B32F313AA3D}" Data="[Pro]RSGNR|NoAutomotive" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
	<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="36CB7EC4AC89" IsValid="" ID="{E4D40BE9-5DF4-435F-90E7-41EA38A22E00}" Data="[Pro]RSGNR" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
	<GenericLicense Expiration="permanent" Name="INSITE_ToolLevel_License" VendorDaemon="cummins" Key="F1DB7A53B7FE" IsValid="" ID="{5C3CD507-3388-42D9-856D-0FAE58710CE9}" Data="[Pro]RSGNR|PreProdSupp|NProdSupp" Version="1.000" Count="uncounted" HostID="ANY" IsExpDlgDisp="0"/>
</LicenseFile>
2010-1-16 22:49
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
嗯 工作量大 顶了
2010-1-17 00:02
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
刚准备来学习,就看见好多不懂的知识
2010-1-17 10:03
0
雪    币: 202
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
高手上啊,呵呵
2010-1-17 22:06
0
雪    币: 96
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
要是短点我还可以,太长了。。。。
2010-1-18 09:53
0
雪    币: 2368
活跃值: (81)
能力值: (RANK:300 )
在线值:
发帖
回帖
粉丝
9
高手一般都不玩,都忙着养家....呵呵。
楼主自己可以翻译出来。
如果做得通俗易懂。适合学习。为大家奉献一把
2010-1-18 14:20
0
雪    币: 42
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
逆向啊,顶下LZ,体力活啊
2010-1-19 01:19
0
雪    币: 143
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
如果是看几眼就能出结果的,估计一堆人帮你,如果要花几个小时来弄的。他们又不傻。。没人那么闲的
2010-1-19 12:29
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qml
12
看不懂- -!。还要学习啊
2010-1-20 10:26
0
雪    币: 202
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
还没有高手搞定啊,呵呵。
我在第三贴再给出信息,多看看吧。
2010-1-28 14:49
0
雪    币: 338
活跃值: (103)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
14
高手都很忙的
2010-1-29 11:28
0
雪    币: 56
活跃值: (276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
才10kx确实没人玩啊!
2010-1-31 22:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
都看着眼花了.真的很费劲.
2010-1-31 23:05
0
雪    币: 3
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
才在学基础,不敢玩。
2010-1-31 23:21
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
说得是
2010-1-31 23:51
0
雪    币: 174
活跃值: (72)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
看来还是满强大的。
2010-9-14 15:46
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
同意,楼主做出来给大家呀
2010-9-14 23:46
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
头晕啊。。。
2010-9-15 01:05
0
游客
登录 | 注册 方可回帖
返回
//