• 标 题:010 Editorv1.3破解(注册机)
  • 作 者:aerror
  • 时 间:004-05-17,10:17
  • 链 接:http://bbs.pediy.com

原创:
00452DA8  /$ 55             PUSH EBP
00452DA9  |. 8BEC           MOV EBP,ESP
00452DAB  |. 83C4 94        ADD ESP,-6C
00452DAE  |. 8955 9C        MOV DWORD PTR SS:[EBP-64],EDX
00452DB1  |. 8945 A0        MOV DWORD PTR SS:[EBP-60],EAX
00452DB4  |. B8 80535800    MOV EAX,010Edito.00585380
00452DB9  |. E8 3E361000    CALL 010Edito.005563FC    //see below
00452DBE  |. 66:C745 B4 080>MOV WORD PTR SS:[EBP-4C],8
00452DC4  |. 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-4]
00452DC7  |. E8 80E8FAFF    CALL 010Edito.0040164C    //see below
00452DCC  |. 8BD0           MOV EDX,EAX
00452DCE  |. FF45 C0        INC DWORD PTR SS:[EBP-40]
00452DD1  |. 8B4D A0        MOV ECX,DWORD PTR SS:[EBP-60]
00452DD4  |. 8B81 D4020000  MOV EAX,DWORD PTR DS:[ECX+2D4]
00452DDA  |. E8 35BB0B00    CALL 010Edito.0050E914
00452DDF  |. 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-4]
00452DE2  |. E8 A9241100    CALL 010Edito.00565290
00452DE7  |. 50             PUSH EAX                                 ; /Arg1
00452DE8  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]                ; |
00452DEB  |. 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-4]             ; |
00452DEE  |. BA 02000000    MOV EDX,2                                ; |
00452DF3  |. E8 8C221100    CALL 010Edito.00565084                   ; \010Edito.00565084 //检查用户名是否为空
00452DF8  |. 59             POP ECX
00452DF9  |. 84C9           TEST CL,CL
00452DFB  |. 74 3F          JE SHORT 010Edito.00452E3C               ;  JUMP
00452DFD  |. 66:C745 B4 140>MOV WORD PTR SS:[EBP-4C],14
00452E03  |. BA EA4C5800    MOV EDX,010Edito.00584CEA
00452E08  |. 8D45 F8        LEA EAX,DWORD PTR SS:[EBP-8]
00452E0B  |. E8 E4201100    CALL 010Edito.00564EF4
00452E10  |. FF45 C0        INC DWORD PTR SS:[EBP-40]
00452E13  |. 8D4D F8        LEA ECX,DWORD PTR SS:[EBP-8]
00452E16  |. 51             PUSH ECX                                 ; /Arg1      
00452E17  |. E8 7C62FDFF    CALL /*afxMessagbox*/                   ; \/*afxMessagbox*/ //提示输入用户名
00452E1C  |. 59             POP ECX
00452E1D  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]
00452E20  |. 8D45 F8        LEA EAX,DWORD PTR SS:[EBP-8]
00452E23  |. BA 02000000    MOV EDX,2
00452E28  |. E8 57221100    CALL 010Edito.00565084
00452E2D  |. 8B4D A4        MOV ECX,DWORD PTR SS:[EBP-5C]
00452E30  |. 64:890D 000000>MOV DWORD PTR FS:[0],ECX
00452E37  |. E9 86030000    JMP 010Edito.004531C2      //return

00452E3C  |> 66:C745 B4 200>MOV WORD PTR SS:[EBP-4C],20              ;  HERE TO GO
00452E42  |. 8D45 F4        LEA EAX,DWORD PTR SS:[EBP-C]
00452E45  |. E8 02E8FAFF    CALL 010Edito.0040164C
00452E4A  |. 8BD0           MOV EDX,EAX
00452E4C  |. FF45 C0        INC DWORD PTR SS:[EBP-40]
00452E4F  |. 8B4D A0        MOV ECX,DWORD PTR SS:[EBP-60]
00452E52  |. 8B81 DC020000  MOV EAX,DWORD PTR DS:[ECX+2DC]
00452E58  |. E8 63DC0800    CALL 010Edito.004E0AC0
00452E5D  |. 8D45 F4        LEA EAX,DWORD PTR SS:[EBP-C]
00452E60  |. E8 2B241100    CALL 010Edito.00565290
00452E65  |. 84C0           TEST AL,AL
00452E67  |. 75 6A          JNZ SHORT 010Edito.00452ED3              ;  NO JUMP
00452E69  |. 8D45 F0        LEA EAX,DWORD PTR SS:[EBP-10]
00452E6C  |. E8 DBE7FAFF    CALL 010Edito.0040164C
00452E71  |. 8BD0           MOV EDX,EAX
00452E73  |. FF45 C0        INC DWORD PTR SS:[EBP-40]
00452E76  |. 8B4D A0        MOV ECX,DWORD PTR SS:[EBP-60]
00452E79  |. 8B81 DC020000  MOV EAX,DWORD PTR DS:[ECX+2DC]
00452E7F  |. E8 3CDC0800    CALL 010Edito.004E0AC0
00452E84  |. 8D55 F0        LEA EDX,DWORD PTR SS:[EBP-10]
00452E87  |. 52             PUSH EDX
00452E88  |. BA FF4C5800    MOV EDX,010Edito.00584CFF
00452E8D  |. 8D45 EC        LEA EAX,DWORD PTR SS:[EBP-14]
00452E90  |. E8 5F201100    CALL 010Edito.00564EF4
00452E95  |. FF45 C0        INC DWORD PTR SS:[EBP-40]
00452E98  |. 8D55 EC        LEA EDX,DWORD PTR SS:[EBP-14]
00452E9B  |. 58             POP EAX
00452E9C  |. E8 D7241100    CALL 010Edito.00565378
00452EA1  |. 85C0           TEST EAX,EAX
00452EA3  |. 0F95C1         SETNE CL
00452EA6  |. 83E1 01        AND ECX,1
00452EA9  |. 51             PUSH ECX
00452EAA  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]
00452EAD  |. 8D45 EC        LEA EAX,DWORD PTR SS:[EBP-14]
00452EB0  |. BA 02000000    MOV EDX,2
00452EB5  |. E8 CA211100    CALL 010Edito.00565084
00452EBA  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]                ; |
00452EBD  |. 8D45 F0        LEA EAX,DWORD PTR SS:[EBP-10]            ; |
00452EC0  |. BA 02000000    MOV EDX,2                                ; |
00452EC5  |. E8 BA211100    CALL 010Edito.00565084                   ; \010Edito.00565084
00452ECA  |. 59             POP ECX
00452ECB  |. 85C9           TEST ECX,ECX
00452ECD  |. 75 04          JNZ SHORT 010Edito.00452ED3
00452ECF  |. 33C0           XOR EAX,EAX
00452ED1  |. EB 05          JMP SHORT 010Edito.00452ED8
00452ED3  |> B8 01000000    MOV EAX,1
00452ED8  |> 50             PUSH EAX                                 ; /Arg1
00452ED9  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]                ; |"06CD-D29C-0DBA-7753"
00452EDC  |. 8D45 F4        LEA EAX,DWORD PTR SS:[EBP-C]             ; |
00452EDF  |. BA 02000000    MOV EDX,2                                ; |
00452EE4  |. E8 9B211100    CALL 010Edito.00565084                   ; \010Edito.00565084
00452EE9  |. 59             POP ECX
00452EEA  |. 84C9           TEST CL,CL
00452EEC  |. 74 3F          JE SHORT 010Edito.00452F2D               ;  JUMP


00452EEE  |. 66:C745 B4 2C0>MOV WORD PTR SS:[EBP-4C],2C        //注册码不全.
00452EF4  |. BA 014D5800    MOV EDX,010Edito.00584D01
00452EF9  |. 8D45 E8        LEA EAX,DWORD PTR SS:[EBP-18]
00452EFC  |. E8 F31F1100    CALL 010Edito.00564EF4
00452F01  |. FF45 C0        INC DWORD PTR SS:[EBP-40]
00452F04  |. 8D4D E8        LEA ECX,DWORD PTR SS:[EBP-18]
00452F07  |. 51             PUSH ECX                                 ; /Arg1
00452F08  |. E8 8B61FDFF    CALL /*afxMessagbox*/                   ; \/*afxMessagbox*/
00452F0D  |. 59             POP ECX
00452F0E  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]
00452F11  |. 8D45 E8        LEA EAX,DWORD PTR SS:[EBP-18]
00452F14  |. BA 02000000    MOV EDX,2
00452F19  |. E8 66211100    CALL 010Edito.00565084
00452F1E  |. 8B4D A4        MOV ECX,DWORD PTR SS:[EBP-5C]
00452F21  |. 64:890D 000000>MOV DWORD PTR FS:[0],ECX
00452F28  |. E9 95020000    JMP 010Edito.004531C2        //return



00452F2D  |> 66:C745 B4 380>MOV WORD PTR SS:[EBP-4C],38              ;  HERE TO GO
00452F33  |. 8D45 E4        LEA EAX,DWORD PTR SS:[EBP-1C]
00452F36  |. E8 11E7FAFF    CALL 010Edito.0040164C
00452F3B  |. 8BD0           MOV EDX,EAX
00452F3D  |. FF45 C0        INC DWORD PTR SS:[EBP-40]
00452F40  |. 8B4D A0        MOV ECX,DWORD PTR SS:[EBP-60]
00452F43  |. 8B81 D4020000  MOV EAX,DWORD PTR DS:[ECX+2D4]
00452F49  |. E8 C6B90B00    CALL 010Edito.0050E914                   
00452F4E  |. 8D55 E4        LEA EDX,DWORD PTR SS:[EBP-1C]            ;  arg2 == "AAAAA"
00452F51  |. 52             PUSH EDX                                 ; /Arg2
00452F52  |. FF35 44775600  PUSH DWORD PTR DS:[567744]               ; |Arg1 = 00FF2D74
00452F58  |. E8 6B020000    CALL 010Edito.004531C8                   ; \010Edito.004531C8
00452F5D  |. 83C4 08        ADD ESP,8
00452F60  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]
00452F63  |. 8D45 E4        LEA EAX,DWORD PTR SS:[EBP-1C]
00452F66  |. BA 02000000    MOV EDX,2
00452F6B  |. E8 14211100    CALL 010Edito.00565084

00452F70  |. 66:C745 B4 440>MOV WORD PTR SS:[EBP-4C],44
00452F76  |. 8D45 E0        LEA EAX,DWORD PTR SS:[EBP-20]
00452F79  |. E8 CEE6FAFF    CALL 010Edito.0040164C
00452F7E  |. 8BD0           MOV EDX,EAX
00452F80  |. FF45 C0        INC DWORD PTR SS:[EBP-40]
00452F83  |. 8B4D A0        MOV ECX,DWORD PTR SS:[EBP-60]
00452F86  |. 8B81 DC020000  MOV EAX,DWORD PTR DS:[ECX+2DC]
00452F8C  |. E8 2FDB0800    CALL 010Edito.004E0AC0
00452F91  |. 8D55 E0        LEA EDX,DWORD PTR SS:[EBP-20]            ;  arg2 =="06CD-D29C-0DBA-7753"
00452F94  |. 52             PUSH EDX                                 ; /Arg2
00452F95  |. FF35 44775600  PUSH DWORD PTR DS:[567744]               ; |Arg1 = 00FF2D74
00452F9B  |. E8 3C020000    CALL 010Edito.004531DC                   ; \010Edito.004531DC
00452FA0  |. 83C4 08        ADD ESP,8
00452FA3  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]
00452FA6  |. 8D45 E0        LEA EAX,DWORD PTR SS:[EBP-20]
00452FA9  |. BA 02000000    MOV EDX,2
00452FAE  |. E8 D1201100    CALL 010Edito.00565084
00452FB3  |. 6A 01          PUSH 1
00452FB5  |. FF35 44775600  PUSH DWORD PTR DS:[567744]
00452FBB  |. E8 0CDFFFFF    CALL 010Edito.00450ECC
00452FC0  |. 83C4 08        ADD ESP,8
00452FC3  |. 8945 98        MOV DWORD PTR SS:[EBP-68],EAX
00452FC6  |. 6A 01          PUSH 1                                   ; /Arg2 = 00000001
00452FC8  |. FF35 44775600  PUSH DWORD PTR DS:[567744]               ; |Arg1 = 00FF2D74
**00452FCE  |. E8 85DEFFFF    CALL 010Edito.00450E58                   ; \010Edito.00450E58  //see below\

00452FD3  |. 83C4 08        ADD ESP,8
00452FD6  |. 8945 94        MOV DWORD PTR SS:[EBP-6C],EAX
00452FD9  |. 817D 94 DB0000>CMP DWORD PTR SS:[EBP-6C],0DB            ;  比较结果 eax ==177
00452FE0  |. 75 35          JNZ SHORT 010Edito.00453017              ;  jump!!!
00452FE2  |. 66:C745 B4 500>MOV WORD PTR SS:[EBP-4C],50
00452FE8  |. BA 284D5800    MOV EDX,010Edito.00584D28
00452FED  |. 8D45 DC        LEA EAX,DWORD PTR SS:[EBP-24]
00452FF0  |. E8 FF1E1100    CALL 010Edito.00564EF4
00452FF5  |. FF45 C0        INC DWORD PTR SS:[EBP-40]
00452FF8  |. 8D4D DC        LEA ECX,DWORD PTR SS:[EBP-24]
00452FFB  |. 51             PUSH ECX                                 ; /Arg1
00452FFC  |. E8 6F61FDFF    CALL /*POPUP_DIALOG*/                  ; \010Edito.00429170
00453001  |. 59             POP ECX
00453002  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]
00453005  |. 8D45 DC        LEA EAX,DWORD PTR SS:[EBP-24]
00453008  |. BA 02000000    MOV EDX,2
0045300D  |. E8 72201100    CALL 010Edito.00565084
00453012  |. E9 04010000    JMP 010Edito.0045311B
00453017  |> 837D 94 10     CMP DWORD PTR SS:[EBP-6C],10
0045301B  |. 75 3F          JNZ SHORT 010Edito.0045305C              ;  here to go是否==10 jump!!
0045301D  |. 66:C745 B4 5C0>MOV WORD PTR SS:[EBP-4C],5C
00453023  |. BA 534D5800    MOV EDX,010Edito.00584D53
00453028  |. 8D45 D8        LEA EAX,DWORD PTR SS:[EBP-28]
0045302B  |. E8 C41E1100    CALL 010Edito.00564EF4
00453030  |. FF45 C0        INC DWORD PTR SS:[EBP-40]
00453033  |. 8D4D D8        LEA ECX,DWORD PTR SS:[EBP-28]
00453036  |. 51             PUSH ECX                                 ; /Arg1
00453037  |. E8 3461FDFF    CALL /*POPUP_DIALOG*/                  ; \010Edito.00429170
0045303C  |. 59             POP ECX
0045303D  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]
00453040  |. 8D45 D8        LEA EAX,DWORD PTR SS:[EBP-28]
00453043  |. BA 02000000    MOV EDX,2
00453048  |. E8 37201100    CALL 010Edito.00565084
0045304D  |. 8B4D A4        MOV ECX,DWORD PTR SS:[EBP-5C]
00453050  |. 64:890D 000000>MOV DWORD PTR FS:[0],ECX
00453057  |. E9 66010000    JMP 010Edito.004531C2        //return

0045305C  |> 817D 98 930000>CMP DWORD PTR SS:[EBP-68],93             ;  here to go
00453063  |. 75 77          JNZ SHORT 010Edito.004530DC              ;  jmp
00453065  |. 837D 94 71     CMP DWORD PTR SS:[EBP-6C],71
00453069  |. 75 32          JNZ SHORT 010Edito.0045309D
0045306B  |. 66:C745 B4 680>MOV WORD PTR SS:[EBP-4C],68
00453071  |. BA E54D5800    MOV EDX,010Edito.00584DE5
00453076  |. 8D45 D4        LEA EAX,DWORD PTR SS:[EBP-2C]
00453079  |. E8 761E1100    CALL 010Edito.00564EF4
0045307E  |. FF45 C0        INC DWORD PTR SS:[EBP-40]
00453081  |. 8D4D D4        LEA ECX,DWORD PTR SS:[EBP-2C]
00453084  |. 51             PUSH ECX                                 ; /Arg1
00453085  |. E8 E660FDFF    CALL /*POPUP_DIALOG*/                  ; \010Edito.00429170
0045308A  |. 59             POP ECX
0045308B  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]
0045308E  |. 8D45 D4        LEA EAX,DWORD PTR SS:[EBP-2C]
00453091  |. BA 02000000    MOV EDX,2
00453096  |. E8 E91F1100    CALL 010Edito.00565084
0045309B  |. EB 7E          JMP SHORT 010Edito.0045311B
0045309D  |> 66:C745 B4 740>MOV WORD PTR SS:[EBP-4C],74
004530A3  |. BA 1D4E5800    MOV EDX,010Edito.00584E1D
004530A8  |. 8D45 D0        LEA EAX,DWORD PTR SS:[EBP-30]
004530AB  |. E8 441E1100    CALL 010Edito.00564EF4
004530B0  |. FF45 C0        INC DWORD PTR SS:[EBP-40]
004530B3  |. 8D4D D0        LEA ECX,DWORD PTR SS:[EBP-30]
004530B6  |. 51             PUSH ECX                                 ; /Arg1
004530B7  |. E8 B460FDFF    CALL /*POPUP_DIALOG*/                  ; \010Edito.00429170
004530BC  |. 59             POP ECX
004530BD  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]
004530C0  |. 8D45 D0        LEA EAX,DWORD PTR SS:[EBP-30]
004530C3  |. BA 02000000    MOV EDX,2
004530C8  |. E8 B71F1100    CALL 010Edito.00565084
004530CD  |. 8B4D A4        MOV ECX,DWORD PTR SS:[EBP-5C]
004530D0  |. 64:890D 000000>MOV DWORD PTR FS:[0],ECX
004530D7  |. E9 E6000000    JMP 010Edito.004531C2        //return

004530DC  |> 66:C745 B4 800>MOV WORD PTR SS:[EBP-4C],80              ;  here to go
004530E2  |. BA 554E5800    MOV EDX,010Edito.00584E55
004530E7  |. 8D45 CC        LEA EAX,DWORD PTR SS:[EBP-34]
004530EA  |. E8 051E1100    CALL 010Edito.00564EF4
004530EF  |. FF45 C0        INC DWORD PTR SS:[EBP-40]
004530F2  |. 8D4D CC        LEA ECX,DWORD PTR SS:[EBP-34]            ;  显示对话框"无效口令。请按注.."
004530F5  |. 51             PUSH ECX                                 ; /Arg1
004530F6  |. E8 7560FDFF    CALL /*POPUP_DIALOG*/                  ; \010Edito.00429170
004530FB  |. 59             POP ECX
004530FC  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]
004530FF  |. 8D45 CC        LEA EAX,DWORD PTR SS:[EBP-34]
00453102  |. BA 02000000    MOV EDX,2
00453107  |. E8 781F1100    CALL 010Edito.00565084
0045310C  |. 8B4D A4        MOV ECX,DWORD PTR SS:[EBP-5C]
0045310F  |. 64:890D 000000>MOV DWORD PTR FS:[0],ECX
00453116  |. E9 A7000000    JMP 010Edito.004531C2      //return;

0045311B  |> FF35 44775600  PUSH DWORD PTR DS:[567744]
00453121  |. E8 C6F0FFFF    CALL 010Edito.004521EC
00453126  |. 59             POP ECX
00453127  |. A1 44775600    MOV EAX,DWORD PTR DS:[567744]
0045312C  |. 8945 C8        MOV DWORD PTR SS:[EBP-38],EAX
0045312F  |. 837D C8 00     CMP DWORD PTR SS:[EBP-38],0
00453133  |. 74 4B          JE SHORT 010Edito.00453180
00453135  |. 66:C745 B4 980>MOV WORD PTR SS:[EBP-4C],98
0045313B  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]
0045313E  |. 8B45 C8        MOV EAX,DWORD PTR SS:[EBP-38]
00453141  |. 83C0 08        ADD EAX,8
00453144  |. BA 02000000    MOV EDX,2
00453149  |. E8 361F1100    CALL 010Edito.00565084
0045314E  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]
00453151  |. 8B45 C8        MOV EAX,DWORD PTR SS:[EBP-38]
00453154  |. 83C0 04        ADD EAX,4
00453157  |. BA 02000000    MOV EDX,2
0045315C  |. E8 231F1100    CALL 010Edito.00565084
00453161  |. FF4D C0        DEC DWORD PTR SS:[EBP-40]
00453164  |. BA 02000000    MOV EDX,2
00453169  |. 8B45 C8        MOV EAX,DWORD PTR SS:[EBP-38]
0045316C  |. E8 131F1100    CALL 010Edito.00565084
00453171  |. FF75 C8        PUSH DWORD PTR SS:[EBP-38]               ; /Arg1
00453174  |. E8 231F1000    CALL 010Edito.0055509C                   ; \010Edito.0055509C
00453179  |. 59             POP ECX
0045317A  |. 66:C745 B4 8C0>MOV WORD PTR SS:[EBP-4C],8C
00453180  |> 33C9           XOR ECX,ECX
00453182  |. 890D 44775600  MOV DWORD PTR DS:[567744],ECX
00453188  |. 8B45 A0        MOV EAX,DWORD PTR SS:[EBP-60]
0045318B  |. 83B8 00030000 >CMP DWORD PTR DS:[EAX+300],0
00453192  |. 74 17          JE SHORT 010Edito.004531AB
00453194  |. 8B15 E41A5A00  MOV EDX,DWORD PTR DS:[5A1AE4]            ;  010Edito._Form010Ed
0045319A  |. 8B02           MOV EAX,DWORD PTR DS:[EDX]
0045319C  |. E8 8B830A00    CALL 010Edito.004FB52C
004531A1  |. 8B45 A0        MOV EAX,DWORD PTR SS:[EBP-60]
004531A4  |. E8 7B830A00    CALL 010Edito.004FB524
004531A9  |. EB 0D          JMP SHORT 010Edito.004531B8
004531AB  |> 8B55 A0        MOV EDX,DWORD PTR SS:[EBP-60]
004531AE  |. C782 2C020000 >MOV DWORD PTR DS:[EDX+22C],1
004531B8  |> 8B4D A4        MOV ECX,DWORD PTR SS:[EBP-5C]
004531BB  |. 64:890D 000000>MOV DWORD PTR FS:[0],ECX

004531C2  |> 8BE5           MOV ESP,EBP
004531C4  |. 5D             POP EBP
004531C5  \. C3             RETN


/////////////////////////////////////////////////////////////////////////////////////////////

00450E58  /$ 55             PUSH EBP
00450E59  |. 8BEC           MOV EBP,ESP
00450E5B  |. FF75 0C        PUSH DWORD PTR SS:[EBP+C]
00450E5E  |. FF75 08        PUSH DWORD PTR SS:[EBP+8]
00450E61  |. E8 66000000    CALL 010Edito.00450ECC         //see below 
00450E66  |. 83C4 08        ADD ESP,8
00450E69  |. 83E8 2D        SUB EAX,2D                               ;  Switch (cases 2D..E7)
00450E6C  |. 74 0E          JE SHORT 010Edito.00450E7C
00450E6E  |. 83E8 21        SUB EAX,21
00450E71  |. 74 17          JE SHORT 010Edito.00450E8A
00450E73  |. 2D 99000000    SUB EAX,99
00450E78  |. 74 09          JE SHORT 010Edito.00450E83
00450E7A  |. EB 15          JMP SHORT 010Edito.00450E91
00450E7C  |> B8 DB000000    MOV EAX,0DB                              ;  Case 2D of switch 00450E69
00450E81  |. 5D             POP EBP
00450E82  |. C3             RETN
00450E83  |> B8 77010000    MOV EAX,177                              ;  Case E7 of switch 00450E69  //here
00450E88  |. 5D             POP EBP
00450E89  |. C3             RETN
00450E8A  |> B8 10000000    MOV EAX,10                               ;  Case 4E of switch 00450E69
00450E8F  |. 5D             POP EBP
00450E90  |. C3             RETN
00450E91  |> FF75 08        PUSH DWORD PTR SS:[EBP+8]                ; /Arg1; Default case of switch 00450E69
00450E94  |. E8 03030000    CALL 010Edito.0045119C                   ; \010Edito.0045119C
00450E99  |. 59             POP ECX
00450E9A  |. 83E8 17        SUB EAX,17                               ;  Switch (cases 17..138)
00450E9D  |. 74 0E          JE SHORT 010Edito.00450EAD
00450E9F  |. 83E8 13        SUB EAX,13
00450EA2  |. 74 17          JE SHORT 010Edito.00450EBB
00450EA4  |. 2D 0E010000    SUB EAX,10E
00450EA9  |. 74 09          JE SHORT 010Edito.00450EB4
00450EAB  |. EB 15          JMP SHORT 010Edito.00450EC2
00450EAD  |> B8 71000000    MOV EAX,71                               ;  Case 17 of switch 00450E9A
00450EB2  |. 5D             POP EBP
00450EB3  |. C3             RETN
00450EB4  |> B8 2F000000    MOV EAX,2F                               ;  Case 138 of switch 00450E9A
00450EB9  |. 5D             POP EBP
00450EBA  |. C3             RETN
00450EBB  |> B8 77010000    MOV EAX,177                              ;  Case 2A of switch 00450E9A
00450EC0  |. 5D             POP EBP
00450EC1  |. C3             RETN
00450EC2  |> B8 77010000    MOV EAX,177                              ;  Default case of switch 00450E9A
00450EC7  |. 5D             POP EBP
00450EC8  \. C3             RETN

///////////////////////////////////////////////////////////////////////////////////////////

00450ECC   $ 55             PUSH EBP
00450ECD   . 8BEC           MOV EBP,ESP
00450ECF   . 83C4 C0        ADD ESP,-40
00450ED2   . B8 10435800    MOV EAX,010Edito.00584310    //global variable
00450ED7   . E8 20551000    CALL 010Edito.005563FC    //初始化
00450EDC   . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
00450EDF   . 83C0 04        ADD EAX,4
00450EE2   . E8 A9431100    CALL 010Edito.00565290  //检测EAX是否为空
00450EE7   . 84C0           TEST AL,AL
00450EE9   . 75 0F          JNZ SHORT 010Edito.00450EFA //jump(go die!)
00450EEB   . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]//go go go
00450EEE   . 83C0 08        ADD EAX,8
00450EF1   . E8 9A431100    CALL 010Edito.00565290  //test eax + 8 (user name )
00450EF6   . 84C0           TEST AL,AL
00450EF8   . 74 14          JE SHORT 010Edito.00450F0E //go further

00450EFA   > B8 93000000    MOV EAX,93
00450EFF   . 8B55 D8        MOV EDX,DWORD PTR SS:[EBP-28]
00450F02   . 64:8915 000000>MOV DWORD PTR FS:[0],EDX
00450F09   . E9 89020000    JMP 010Edito.00451197 //go to return 

00450F0E   > 8D4D C4        LEA ECX,DWORD PTR SS:[EBP-3C]
00450F11   . 51             PUSH ECX                                 ; /Arg2
00450F12   . FF75 08        PUSH DWORD PTR SS:[EBP+8]                ; |Arg1
00450F15   . E8 6A0C0000    CALL 010Edito.00451B84                   ; \010Edito.00451B84
00450F1A   . 83C4 08        ADD ESP,8                                ;  将序列号ascii转为二进制
00450F1D   . 33C0           XOR EAX,EAX
00450F1F   . 8945 D4        MOV DWORD PTR SS:[EBP-2C],EAX
00450F22   > 66:C745 E8 080>MOV WORD PTR SS:[EBP-18],8
00450F28   . 8B55 D4        MOV EDX,DWORD PTR SS:[EBP-2C]
00450F2B   . 8B1495 6841580>MOV EDX,DWORD PTR DS:[EDX*4+584168]      ;  =="999"
00450F32   . 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-4]
00450F35   . E8 BA3F1100    CALL 010Edito.00564EF4
00450F3A   . FF45 F4        INC DWORD PTR SS:[EBP-C]
00450F3D   . 8D55 FC        LEA EDX,DWORD PTR SS:[EBP-4]
00450F40   . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
00450F43   . 83C0 04        ADD EAX,4
00450F46   . E8 1D421100    CALL 010Edito.00565168
00450F4B   . 50             PUSH EAX                                 ; /Arg1
00450F4C   . FF4D F4        DEC DWORD PTR SS:[EBP-C]                 ; |
00450F4F   . 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-4]             ; |
00450F52   . BA 02000000    MOV EDX,2                                ; |
00450F57   . E8 28411100    CALL 010Edito.00565084                   ; \010Edito.00565084
00450F5C   . 59             POP ECX
00450F5D   . 84C9           TEST CL,CL
00450F5F   . 74 14          JE SHORT 010Edito.00450F75    //go further

00450F61   . B8 E7000000    MOV EAX,0E7
00450F66   . 8B55 D8        MOV EDX,DWORD PTR SS:[EBP-28]
00450F69   . 64:8915 000000>MOV DWORD PTR FS:[0],EDX
00450F70   . E9 22020000    JMP 010Edito.00451197
00450F75   > FF45 D4        INC DWORD PTR SS:[EBP-2C]
00450F78   . 837D D4 01     CMP DWORD PTR SS:[EBP-2C],1              ;  HERE TO GO
00450F7C   .^7C A4          JL SHORT 010Edito.00450F22               ;  NO JUMP
00450F7E   . 807D C7 9C     CMP BYTE PTR SS:[EBP-39],9C              ;  if 9C
00450F82   . 0F85 83000000  JNZ 010Edito.0045100B                    ;  NO JUMP
00450F88   . 8A4D C4        MOV CL,BYTE PTR SS:[EBP-3C]
00450F8B   . 324D CA        XOR CL,BYTE PTR SS:[EBP-36]              ;  cl =1 xor 7
00450F8E   . 884D C3        MOV BYTE PTR SS:[EBP-3D],CL              ;  save dl to [ebp-3d]
00450F91   . 8A45 C5        MOV AL,BYTE PTR SS:[EBP-3B]
00450F94   . 3245 CB        XOR AL,BYTE PTR SS:[EBP-35]              ;  al = 2 xor 8
00450F97   . 33D2           XOR EDX,EDX
00450F99   . 8AD0           MOV DL,AL                                ;  dl = al
00450F9B   . C1E2 08        SHL EDX,8                                ;  ??8bit  dh = al
00450F9E   . 8A4D C6        MOV CL,BYTE PTR SS:[EBP-3A]
00450FA1   . 324D C9        XOR CL,BYTE PTR SS:[EBP-37]              ;  cl = ?3? xor ?5?
00450FA4   . 33C0           XOR EAX,EAX
00450FA6   . 8AC1           MOV AL,CL
00450FA8   . 66:03D0        ADD DX,AX                                ;  ?????????????,
00450FAB   . 66:8955 C0     MOV WORD PTR SS:[EBP-40],DX              ;  A VALUE USE LATER
00450FAF   . 8A55 C3        MOV DL,BYTE PTR SS:[EBP-3D]              ;  ???1? xor ?7??????
00450FB2   . 52             PUSH EDX                                 ; /Arg1
00450FB3   . E8 FA170000    CALL 010Edito.004527B2                   ; \010Edito.004527B2
00450FB8   . 59             POP ECX
00450FB9   . 33C9           XOR ECX,ECX
00450FBB   . 8AC8           MOV CL,AL
00450FBD   . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
00450FC0   . 8948 18        MOV DWORD PTR DS:[EAX+18],ECX            ;  sav0
00450FC3   . 66:8B55 C0     MOV DX,WORD PTR SS:[EBP-40]              ;  VALUE calc before
00450FC7   . 52             PUSH EDX                                 ; /Arg1
00450FC8   . E8 FB170000    CALL 010Edito.004527C8                   ; \010Edito.004527C8
00450FCD   . 59             POP ECX
00450FCE   . 0FB7C8         MOVZX ECX,AX
00450FD1   . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
00450FD4   . 8948 1C        MOV DWORD PTR DS:[EAX+1C],ECX            ;  save1
00450FD7   . 8B55 08        MOV EDX,DWORD PTR SS:[EBP+8]
00450FDA   . 837A 18 00     CMP DWORD PTR DS:[EDX+18],0              ;  compare sav0
00450FDE   . 74 15          JE SHORT 010Edito.00450FF5               ;  NO JUMP(go die!)
00450FE0   . 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+8]
00450FE3   . 8379 1C 00     CMP DWORD PTR DS:[ECX+1C],0              ;  compare sav1
00450FE7   . 74 0C          JE SHORT 010Edito.00450FF5               ;  NO JUMP(go die!)
00450FE9   . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
00450FEC   . 8178 1C E80300>CMP DWORD PTR DS:[EAX+1C],3E8
00450FF3   . 76 46          JBE SHORT 010Edito.0045103B              ;  JUMP to further compare
00450FF5   > B8 E7000000    MOV EAX,0E7                              ;  Here return error!

00450FFA   . 8B55 D8        MOV EDX,DWORD PTR SS:[EBP-28]
00450FFD   . 64:8915 000000>MOV DWORD PTR FS:[0],EDX
00451004   . E9 8E010000    JMP 010Edito.00451197
00451009   . EB 30          JMP SHORT 010Edito.0045103B
0045100B   > 807D C7 FC     CMP BYTE PTR SS:[EBP-39],0FC
0045100F   . 75 16          JNZ SHORT 010Edito.00451027
00451011   . 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+8]
00451014   . C741 18 FF0000>MOV DWORD PTR DS:[ECX+18],0FF
0045101B   . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
0045101E   . C740 1C 010000>MOV DWORD PTR DS:[EAX+1C],1
00451025   . EB 14          JMP SHORT 010Edito.0045103B
00451027   > B8 E7000000    MOV EAX,0E7
0045102C   . 8B55 D8        MOV EDX,DWORD PTR SS:[EBP-28]
0045102F   . 64:8915 000000>MOV DWORD PTR FS:[0],EDX
00451036   . E9 5C010000    JMP 010Edito.00451197
0045103B   > 8B4D 08        MOV ECX,DWORD PTR SS:[EBP+8]             ;  HERE TO GO
0045103E   . FF71 1C        PUSH DWORD PTR DS:[ECX+1C]               ;  arg4 = sav1
00451041   . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
00451044   . FF70 18        PUSH DWORD PTR DS:[EAX+18]               ;  arg3  = sav0
00451047   . 807D C7 9C     CMP BYTE PTR SS:[EBP-39],9C              ;  ??????9C
0045104B   . 0F94C2         SETE DL                                  ;  SET DL 1 IF EQUEAL
0045104E   . 83E2 01        AND EDX,1
00451051   . 52             PUSH EDX                                 ;  arg2
00451052   . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
00451055   . 83C0 04        ADD EAX,4
00451058   . E8 330DFBFF    CALL 010Edito.00401D90
0045105D   . 50             PUSH EAX                                 ; |arg1= user name
0045105E   . E8 AD140000    CALL 010Edito.00452510                   ; \010Edito.00452510
00451063   . 83C4 10        ADD ESP,10
00451066   . 8945 D0        MOV DWORD PTR SS:[EBP-30],EAX            ; 结果: eax ==be030747
00451069   . 8A55 D0        MOV DL,BYTE PTR SS:[EBP-30]
0045106C   . 80E2 FF        AND DL,0FF
0045106F   . 3A55 C8        CMP DL,BYTE PTR SS:[EBP-38]

00451072   . 74 14          JE SHORT 010Edito.00451088
00451074   . B8 E7000000    MOV EAX,0E7
00451079   . 8B55 D8        MOV EDX,DWORD PTR SS:[EBP-28]
0045107C   . 64:8915 000000>MOV DWORD PTR FS:[0],EDX
00451083   . E9 0F010000    JMP 010Edito.00451197 //go to return //go to return


00451088   > 8B4D D0        MOV ECX,DWORD PTR SS:[EBP-30]
0045108B   . C1E9 08        SHR ECX,8
0045108E   . 80E1 FF        AND CL,0FF
00451091   . 3A4D C9        CMP CL,BYTE PTR SS:[EBP-37]
00451094   . 74 14          JE SHORT 010Edito.004510AA

00451096   . B8 E7000000    MOV EAX,0E7
0045109B   . 8B55 D8        MOV EDX,DWORD PTR SS:[EBP-28]
0045109E   . 64:8915 000000>MOV DWORD PTR FS:[0],EDX
004510A5   . E9 ED000000    JMP 010Edito.00451197 //go to return //go to return

004510AA   > 8B4D D0        MOV ECX,DWORD PTR SS:[EBP-30]
004510AD   . C1E9 10        SHR ECX,10
004510B0   . 80E1 FF        AND CL,0FF

004510B3   . 3A4D CA        CMP CL,BYTE PTR SS:[EBP-36]
004510B6   . 74 14          JE SHORT 010Edito.004510CC

004510B8   . B8 E7000000    MOV EAX,0E7
004510BD   . 8B55 D8        MOV EDX,DWORD PTR SS:[EBP-28]
004510C0   . 64:8915 000000>MOV DWORD PTR FS:[0],EDX
004510C7   . E9 CB000000    JMP 010Edito.00451197 //go to return //go to return

004510CC   > 8B4D D0        MOV ECX,DWORD PTR SS:[EBP-30]
004510CF   . C1E9 18        SHR ECX,18
004510D2   . 80E1 FF        AND CL,0FF
004510D5   . 3A4D CB        CMP CL,BYTE PTR SS:[EBP-35]

004510D8   . 74 14          JE SHORT 010Edito.004510EE
004510DA   . B8 E7000000    MOV EAX,0E7
004510DF   . 8B55 D8        MOV EDX,DWORD PTR SS:[EBP-28]
004510E2   . 64:8915 000000>MOV DWORD PTR FS:[0],EDX
004510E9   . E9 A9000000    JMP 010Edito.00451197 //go to return //go to return

004510EE   > 807D C7 9C     CMP BYTE PTR SS:[EBP-39],9C
004510F2   . 75 30          JNZ SHORT 010Edito.00451124

004510F4   . 8B4D 0C        MOV ECX,DWORD PTR SS:[EBP+C]
004510F7   . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
004510FA   . 3B48 18        CMP ECX,DWORD PTR DS:[EAX+18]
004510FD   . 76 14          JBE SHORT 010Edito.00451113
004510FF   . B8 4E000000    MOV EAX,4E
00451104   . 8B55 D8        MOV EDX,DWORD PTR SS:[EBP-28]
00451107   . 64:8915 000000>MOV DWORD PTR FS:[0],EDX
0045110E   . E9 84000000    JMP 010Edito.00451197 //go to return //go to return

00451113   > B8 2D000000    MOV EAX,2D
00451118   . 8B55 D8        MOV EDX,DWORD PTR SS:[EBP-28]
0045111B   . 64:8915 000000>MOV DWORD PTR FS:[0],EDX
00451122   . EB 73          JMP SHORT 010Edito.00451197  //go to return

00451124   > 807D C7 FC     CMP BYTE PTR SS:[EBP-39],0FC
00451128   . 75 5E          JNZ SHORT 010Edito.00451188
0045112A   . 33C9           XOR ECX,ECX
0045112C   . 8A4D C4        MOV CL,BYTE PTR SS:[EBP-3C]
0045112F   . 33C0           XOR EAX,EAX
00451131   . 8A45 C5        MOV AL,BYTE PTR SS:[EBP-3B]
00451134   . C1E0 08        SHL EAX,8
00451137   . 03C8           ADD ECX,EAX
00451139   . 33D2           XOR EDX,EDX
0045113B   . 8A55 C6        MOV DL,BYTE PTR SS:[EBP-3A]
0045113E   . C1E2 10        SHL EDX,10
00451141   . 03CA           ADD ECX,EDX
00451143   . 894D CC        MOV DWORD PTR SS:[EBP-34],ECX
00451146   . FF75 D0        PUSH DWORD PTR SS:[EBP-30]               ; /Arg2
00451149   . FF75 CC        PUSH DWORD PTR SS:[EBP-34]               ; |Arg1
0045114C   . E8 1C160000    CALL 010Edito.0045276D                   ; \010Edito.0045276D
00451151   . 83C4 08        ADD ESP,8
00451154   . 8945 CC        MOV DWORD PTR SS:[EBP-34],EAX
00451157   . 837D CC 00     CMP DWORD PTR SS:[EBP-34],0
0045115B   . 75 11          JNZ SHORT 010Edito.0045116E
0045115D   . B8 E7000000    MOV EAX,0E7
00451162   . 8B55 D8        MOV EDX,DWORD PTR SS:[EBP-28]
00451165   . 64:8915 000000>MOV DWORD PTR FS:[0],EDX
0045116C   . EB 29          JMP SHORT 010Edito.00451197

0045116E   > 8B4D CC        MOV ECX,DWORD PTR SS:[EBP-34]
00451171   . 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]
00451174   . 8948 14        MOV DWORD PTR DS:[EAX+14],ECX
00451177   . B8 93000000    MOV EAX,93
0045117C   . 8B55 D8        MOV EDX,DWORD PTR SS:[EBP-28]
0045117F   . 64:8915 000000>MOV DWORD PTR FS:[0],EDX
00451186   . EB 0F          JMP SHORT 010Edito.00451197

00451188   > B8 E7000000    MOV EAX,0E7
0045118D   . 8B55 D8        MOV EDX,DWORD PTR SS:[EBP-28]
00451190   . 64:8915 000000>MOV DWORD PTR FS:[0],EDX

00451197   > 8BE5           MOV ESP,EBP
00451199   . 5D             POP EBP
0045119A   . C3             RETN






00555F7C  /$ 8B4424 04      MOV EAX,DWORD PTR SS:[ESP+4]
00555F80  |. A8 03          TEST AL,3
00555F82  |. 75 2D          JNZ SHORT 010Edito.00555FB1
00555F84  |> 8B10           /MOV EDX,DWORD PTR DS:[EAX]    AAAAAA
00555F86  |. 83C0 04        |ADD EAX,4
00555F89  |. 8BCA           |MOV ECX,EDX
00555F8B  |. 81EA 01010101  |SUB EDX,1010101
00555F91  |. 81E2 80808080  |AND EDX,80808080
00555F97  |.^74 EB          |JE SHORT 010Edito.00555F84
00555F99  |. F7D1           |NOT ECX
00555F9B  |. 23D1           |AND EDX,ECX
00555F9D  |.^74 E5          \JE SHORT 010Edito.00555F84
00555F9F  |. 84D2           TEST DL,DL
00555FA1  |. 75 28          JNZ SHORT 010Edito.00555FCB
00555FA3  |. 84F6           TEST DH,DH
00555FA5  |. 75 25          JNZ SHORT 010Edito.00555FCC
00555FA7  |. F7C2 0000FF00  TEST EDX,0FF0000
00555FAD  |. 75 1E          JNZ SHORT 010Edito.00555FCD
00555FAF  |. EB 1D          JMP SHORT 010Edito.00555FCE
00555FB1  |> 83C0 04        ADD EAX,4
00555FB4  |. F640 FC FF     TEST BYTE PTR DS:[EAX-4],0FF
00555FB8  |. 74 11          JE SHORT 010Edito.00555FCB
00555FBA  |. F640 FD FF     TEST BYTE PTR DS:[EAX-3],0FF
00555FBE  |. 74 0C          JE SHORT 010Edito.00555FCC
00555FC0  |. F640 FE FF     TEST BYTE PTR DS:[EAX-2],0FF
00555FC4  |. 74 07          JE SHORT 010Edito.00555FCD
00555FC6  |. 48             DEC EAX
00555FC7  |. 24 FC          AND AL,0FC
00555FC9  |.^EB B9          JMP SHORT 010Edito.00555F84
00555FCB  |> 48             DEC EAX
00555FCC  |> 48             DEC EAX
00555FCD  |> 48             DEC EAX
00555FCE  |> 8B4C24 04      MOV ECX,DWORD PTR SS:[ESP+4]
00555FD2  |. 48             DEC EAX
00555FD3  |. 2BC1           SUB EAX,ECX
00555FD5  \. C3             RETN



//////////////////////////////////////////////////////////calc_func1

/*004527B2*/  PUSH EBP
/*004527B3*/  MOV EBP,ESP
/*004527B5*/  PUSH ECX
/*004527B6*/  MOV AL,BYTE PTR SS:[EBP+8]
/*004527B9*/  XOR AL,18
/*004527BB*/  ADD AL,3D
/*004527BD*/  XOR AL,0A7
/*004527BF*/  MOV BYTE PTR SS:[EBP-1],AL
/*004527C2*/  MOV AL,BYTE PTR SS:[EBP-1]
/*004527C5*/  POP ECX
/*004527C6*/  POP EBP
/*004527C7*/  RETN

///////////////////////////////////////////////////////////////////calc_func2

/*004527C8*/  PUSH EBP
/*004527C9*/  MOV EBP,ESP
/*004527CB*/  PUSH ECX
/*004527CC*/  MOV AX,WORD PTR SS:[EBP+8]    //param1
/*004527D0*/  XOR AX,7892
/*004527D4*/  ADD AX,4D30
/*004527D8*/  XOR AX,3421      
/*004527DC*/  MOV WORD PTR SS:[EBP-2],AX
/*004527E0*/  MOVZX EAX,WORD PTR SS:[EBP-2]  //被除数
/*004527E4*/  MOV ECX,0B        //除数
/*        */
/*004527E9*/  CDQ
/*004527EA*/  IDIV ECX
/*004527EC*/  TEST EDX,EDX
/*004527EE*/  JNZ AA4527FF
/*004527F0*/  MOVZX EAX,WORD PTR SS:[EBP-2]
/*004527F4*/  MOV ECX,0B
/*004527F9*/  CDQ
/*004527FA*/  IDIV ECX    //
/*004527FC*/  POP ECX    //返回倍数,
/*004527FD*/  POP EBP
/*004527FE*/  RETN
AA4527FF:
/*004527FF*/  XOR EAX,EAX
/*00452801*/  POP ECX
/*00452802*/  POP EBP
/*00452803*/  RETN

计算用户和key的函数:

00452510  /$ 55             PUSH EBP
00452511  |. 8BEC           MOV EBP,ESP
00452513  |. 83C4 F0        ADD ESP,-10
00452516  |. 53             PUSH EBX

00452517  |. 33C0           XOR EAX,EAX
00452519  |. 8945 FC        MOV /*RESULT*/,EAX
0045251C  |. FF75 08        PUSH /*USER_NAME*/
0045251F  |. E8 583A1000    CALL 010Edito.00555F7C    //SEE BELOW
00452524  |. 59             POP ECX
00452525  |. 8945 F0        MOV /*CALC_COUNT*/,EAX  //SAVE CALC_COUNT

00452528  |. 33D2           XOR EDX,EDX
0045252A  |. 8955 F4        MOV /*VARIABLE_I*/,EDX  //VARIABLE_I =0;
0045252D  |. 8B4D F4        MOV ECX,/*VARIABLE_I*/
00452530  |. 3B4D F0        CMP ECX,/*CALC_COUNT*/  // (IF CALC_COUNT <= 0)
00452533  |. 0F8D 3B010000  JGE 010Edito.00452674  // RETURN 0
00452539  |> 8B45 08        /MOV EAX,/*USER_NAME*/
0045253C  |. 8B55 F4        |MOV EDX,/*VARIABLE_I*/
0045253F  |. 0FBE0C10       |MOVSX ECX,BYTE PTR DS:[EAX+EDX]  // USER_NAME[VARIABLE_I]
00452543  |. 51             |PUSH ECX                           ; /Arg1 = USER_NAME[VARIABLE_I]
00452544  |. E8 8BA41000    |CALL 010Edito.0055C9D4             ; \010Edito.0055C9D4  //SEE BELOW
00452549  |. 59             |POP ECX
0045254A  |. 8945 F8        |MOV /*SEED_BYTE*/,EAX
0045254D  |. 837D 0C 00     |CMP DWORD PTR SS:[EBP+C],0    //EBP+C == 1
00452551  |. 0F84 86000000  |JE 010Edito.004525DD    //NO JUMP

00452557  |. 8B45 F8        |MOV EAX,/*SEED_BYTE*/
0045255A  |. 8B1485 DC48580>|MOV EDX,DWORD PTR DS:[EAX*4+5848DC] //EDX = G_ARR[SEED_BYTE *4]

00452561  |. 0355 FC        |ADD EDX,/*RESULT*/      //EDX += RESULT;
00452564  |. 8B4D F8        |MOV ECX,/*SEED_BYTE*/
00452567  |. 83C1 0D        |ADD ECX,0D
0045256A  |. 81E1 FF000000  |AND ECX,0FF      

00452570  |. 33148D DC48580>|XOR EDX,DWORD PTR DS:[ECX*4+5848DC] // EDX ^= G_ARR[((SEED_BYTE +0D)&0FF) *4]
00452577  |. 8B45 F8        |MOV EAX,/*SEED_BYTE*/
0045257A  |. 83C0 2F        |ADD EAX,2F
0045257D  |. 25 FF000000    |AND EAX,0FF

00452582  |. 0FAF1485 DC485>|IMUL EDX,DWORD PTR DS:[EAX*4+5848DC]//EDX *=G_ARR[((SEED_BYTE +2F)&0FF) *4]
0045258A  |. 6B4D F4 13     |IMUL ECX,/*VARIABLE_I*/,13     //ECX = VARIABLE_I *13;
0045258E  |. 81E1 FF000000  |AND ECX,0FF
00452594  |. 03148D DC48580>|ADD EDX,DWORD PTR DS:[ECX*4+5848DC]

0045259B  |. 8B45 F4        |MOV EAX,/*VARIABLE_I*/    
0045259E  |. 8D04C0         |LEA EAX,DWORD PTR DS:[EAX+EAX*8]  // DS:[i+i*8]
004525A1  |. 8B4D 10        |MOV ECX,DWORD PTR SS:[EBP+10]  //[EBP+10] == 01
004525A4  |. 8BD9           |MOV EBX,ECX      
004525A6  |. C1E1 04        |SHL ECX,4        // ECX <<4;
004525A9  |. 03CB           |ADD ECX,EBX      // ECX += EBX;  
004525AB  |. 03C1           |ADD EAX,ECX      // 
004525AD  |. 25 FF000000    |AND EAX,0FF
004525B2  |. 031485 DC48580>|ADD EDX,DWORD PTR DS:[EAX*4+5848DC]//EDX += G_ARR[EAX*4];

004525B9  |. 6B45 F4 0D     |IMUL EAX,/*VARIABLE_I*/,0D    //EAX = VARIABLE_I * 0D
004525BD  |. 8B4D 14        |MOV ECX,DWORD PTR SS:[EBP+14]  // ==01
004525C0  |. 8BD9           |MOV EBX,ECX      //
004525C2  |. C1E1 04        |SHL ECX,4        //ECX <<4;
004525C5  |. 2BCB           |SUB ECX,EBX      
004525C7  |. 03C1           |ADD EAX,ECX
004525C9  |. 25 FF000000    |AND EAX,0FF
004525CE  |. 031485 DC48580>|ADD EDX,DWORD PTR DS:[EAX*4+5848DC]//EDX += G_ARR[EAX*4];

004525D5  |. 8955 FC        |MOV /*RESULT*/,EDX      //RESULT == EDX;
004525D8  |. E9 88000000    |JMP 010Edito.00452665

004525DD  |> 8B45 F8        |MOV EAX,/*SEED_BYTE*/
004525E0  |. 8B1485 DC48580>|MOV EDX,DWORD PTR DS:[EAX*4+5848DC]
004525E7  |. 0355 FC        |ADD EDX,/*RESULT*/
004525EA  |. 8B4D F8        |MOV ECX,/*SEED_BYTE*/
004525ED  |. 83C1 3F        |ADD ECX,3F
004525F0  |. 81E1 FF000000  |AND ECX,0FF
004525F6  |. 33148D DC48580>|XOR EDX,DWORD PTR DS:[ECX*4+5848DC]
004525FD  |. 8B45 F8        |MOV EAX,/*SEED_BYTE*/
00452600  |. 83C0 17        |ADD EAX,17
00452603  |. 25 FF000000    |AND EAX,0FF
00452608  |. 0FAF1485 DC485>|IMUL EDX,DWORD PTR DS:[EAX*4+5848DC]
00452610  |. 8B4D F4        |MOV ECX,/*VARIABLE_I*/
00452613  |. 8BC1           |MOV EAX,ECX
00452615  |. C1E1 03        |SHL ECX,3
00452618  |. 2BC8           |SUB ECX,EAX
0045261A  |. 81E1 FF000000  |AND ECX,0FF
00452620  |. 03148D DC48580>|ADD EDX,DWORD PTR DS:[ECX*4+5848DC]
00452627  |. 8B4D F4        |MOV ECX,/*VARIABLE_I*/
0045262A  |. 8D0CC9         |LEA ECX,DWORD PTR DS:[ECX+ECX*8]
0045262D  |. 8B45 10        |MOV EAX,DWORD PTR SS:[EBP+10]
00452630  |. 8BD8           |MOV EBX,EAX
00452632  |. C1E0 04        |SHL EAX,4
00452635  |. 03C3           |ADD EAX,EBX
00452637  |. 03C8           |ADD ECX,EAX
00452639  |. 81E1 FF000000  |AND ECX,0FF
0045263F  |. 03148D DC48580>|ADD EDX,DWORD PTR DS:[ECX*4+5848DC]
00452646  |. 6B45 F4 0D     |IMUL EAX,/*VARIABLE_I*/,0D
0045264A  |. 8B4D 14        |MOV ECX,DWORD PTR SS:[EBP+14]
0045264D  |. 8BD9           |MOV EBX,ECX
0045264F  |. C1E1 04        |SHL ECX,4
00452652  |. 2BCB           |SUB ECX,EBX
00452654  |. 03C1           |ADD EAX,ECX
00452656  |. 25 FF000000    |AND EAX,0FF
0045265B  |. 031485 DC48580>|ADD EDX,DWORD PTR DS:[EAX*4+5848DC]
00452662  |. 8955 FC        |MOV /*RESULT*/,EDX
              
00452665  |> FF45 F4        |INC /*VARIABLE_I*/      //  VARIABLE_I ++; 
00452668  |. 8B45 F4        |MOV EAX,/*VARIABLE_I*/
0045266B  |. 3B45 F0        |CMP EAX,/*CALC_COUNT*/   
0045266E  |.^0F8C C5FEFFFF  \JL 010Edito.00452539  //WHILE (VARIAL < CALC_COUNT)

00452674  |> 8B45 FC        MOV EAX,/*RESULT*/  //RETURN RESULT;

00452677  |. 5B             POP EBX
00452678  |. 8BE5           MOV ESP,EBP
0045267A  |. 5D             POP EBP
0045267B  \. C3             RETN

///////////////////////////////////////////////////////////////////////////////////////

00555F7C  /$ 8B4424 04      MOV EAX,DWORD PTR SS:[ESP+4]  // EAX = USER_NAME
00555F80  |. A8 03          TEST AL,3
00555F82  |. 75 2D          JNZ AA555FB1    //NO JUMP
00555F84  |> 8B10           /MOV EDX,DWORD PTR DS:[EAX]
00555F86  |. 83C0 04        |ADD EAX,4
00555F89  |. 8BCA           |MOV ECX,EDX
00555F8B  |. 81EA 01010101  |SUB EDX,1010101
00555F91  |. 81E2 80808080  |AND EDX,80808080
00555F97  |.^74 EB          |JE SHORT 010Edito.00555F84
00555F99  |. F7D1           |NOT ECX
00555F9B  |. 23D1           |AND EDX,ECX
00555F9D  |.^74 E5          \JE SHORT 010Edito.00555F84
00555F9F  |. 84D2           TEST DL,DL
00555FA1  |. 75 28          JNZ SHORT 010Edito.00555FCB
00555FA3  |. 84F6           TEST DH,DH
00555FA5  |. 75 25          JNZ SHORT 010Edito.00555FCC
00555FA7  |. F7C2 0000FF00  TEST EDX,0FF0000
00555FAD  |. 75 1E          JNZ SHORT 010Edito.00555FCD
00555FAF  |. EB 1D          JMP SHORT 010Edito.00555FCE

00555FB1  |> 83C0 04        ADD EAX,4
00555FB4  |. F640 FC FF     TEST BYTE PTR DS:[EAX-4],0FF
00555FB8  |. 74 11          JE SHORT 010Edito.00555FCB
00555FBA  |. F640 FD FF     TEST BYTE PTR DS:[EAX-3],0FF
00555FBE  |. 74 0C          JE SHORT 010Edito.00555FCC
00555FC0  |. F640 FE FF     TEST BYTE PTR DS:[EAX-2],0FF
00555FC4  |. 74 07          JE SHORT 010Edito.00555FCD
00555FC6  |. 48             DEC EAX
00555FC7  |. 24 FC          AND AL,0FC
00555FC9  |.^EB B9          JMP SHORT 010Edito.00555F84
00555FCB  |> 48             DEC EAX
00555FCC  |> 48             DEC EAX
00555FCD  |> 48             DEC EAX
00555FCE  |> 8B4C24 04      MOV ECX,DWORD PTR SS:[ESP+4]
00555FD2  |. 48             DEC EAX
00555FD3  |. 2BC1           SUB EAX,ECX
00555FD5  \. C3             RETN

////////////////////////////////////////////////////////////////////////////////////////

0055C9D4  /$ 55             PUSH EBP
0055C9D5  |. 8BEC           MOV EBP,ESP
0055C9D7  |. 8B45 08        MOV EAX,DWORD PTR SS:[EBP+8]  //MOVE EAX,PARAM1
0055C9DA  |. 83F8 FF        CMP EAX,-1        //IF EAX != FF
0055C9DD  |. 75 05          JNZ SHORT 010Edito.0055C9E4
0055C9DF  |. 83C8 FF        OR EAX,FFFFFFFF
0055C9E2  |. 5D             POP EBP
0055C9E3  |. C3             RETN

0055C9E4  |> 33D2           XOR EDX,EDX    //EDX = 0
0055C9E6  |. 8AD0           MOV DL,AL    
0055C9E8  |. F60455 36EF590>TEST BYTE PTR DS:[EDX*2+59EF36],2  //IF (! (59EF36(PARAM1*2) & 2) ) 
0055C9F0  |. 74 07          JE SHORT 010Edito.0055C9F9    // RETURN PARAM1;
0055C9F2  |. 83C2 E0        ADD EDX,-20
0055C9F5  |. 8BC2           MOV EAX,EDX    // RETURN PARAM1-20
0055C9F7  |. 5D             POP EBP
0055C9F8  |. C3             RETN

0055C9F9  |> 8BC2           MOV EAX,EDX
0055C9FB  |. 5D             POP EBP
0055C9FC  \. C3             RETN


注册机的C代码:
#include <stdio.h>
#include <windows.h>

DWORD G_SEEDS[]=
{
0x39CB44B8,0x23754F67,0x5F017211,0x3EBB24DA
,0x351707C6,0x63F9774B,0x17827288,0x0FE74821
,0x5B5F670F,0x48315AE8,0x785B7769,0x2B7A1547
,0x38D11292,0x42A11B32,0x35332244,0x77437B60
,0x1EAB3B10,0x53810000,0x1D0212AE,0x6F0377A8
,0x43C03092,0x2D3C0A8E,0x62950CBF,0x30F06FFA
,0x34F710E0,0x28F417FB,0x350D2F95,0x5A361D5A
,0x15CC060B,0x0AFD13CC,0x28603BCF,0x3371066B
,0x30CD14E4,0x175D3A67,0x6DD66A13,0x2D3409F9
,0x581E7B82,0x76526B99,0x5C8D5188,0x2C857971
,0x15F51FC0,0x68CC0D11,0x49F55E5C,0x275E4364
,0x2D1E0DBC,0x4CEE7CE3,0x32555840,0x112E2E08
,0x6978065A,0x72921406,0x314578E7,0x175621B7
,0x40771DBF,0x3FC238D6,0x4A31128A,0x2DAD036E
,0x41A069D6,0x25400192,0x00DD4667,0x6AFC1F4F
,0x571040CE,0x62FE66DF,0x41DB4B3E,0x3582231F
,0x55F6079A,0x1CA70644,0x1B1643D2,0x3F7228C9
,0x5F141070,0x3E1474AB,0x444B256E,0x537050D9
,0x0F42094B,0x2FD820E6,0x778B2E5E,0x71176D02
,0x7FEA7A69,0x5BB54628,0x19BA6C71,0x39763A99
,0x178D54CD,0x01246E88,0x3313537E,0x2B8E2D17
,0x2A3D10BE,0x59D10582,0x37A163DB,0x30D6489A
,0x6A215C46,0x0E1C7A76,0x1FC760E7,0x79B80C65
,0x27F459B4,0x799A7326,0x50BA1782,0x2A116D5C
,0x63866E1B,0x3F920E3C,0x55023490,0x55B56089
,0x2C391FD1,0x2F8035C2,0x64FD2B7A,0x4CE8759A
,0x518504F0,0x799501A8,0x3F5B2CAD,0x38E60160
,0x637641D8,0x33352A42,0x51A22C19,0x085C5851
,0x032917AB,0x2B770AC7,0x30AC77B3,0x2BEC1907
,0x035202D0,0x0FA933D3,0x61255DF3,0x22AD06BF
,0x58B86971,0x5FCA0DE5,0x700D6456,0x56A973DB
,0x5AB759FD,0x330E0BE2,0x5B3C0DDD,0x495D3C60
,0x53BD59A6,0x4C5E6D91,0x49D9318D,0x103D5079
,0x61CE42E3,0x7ED5121D,0x14E160ED,0x212D4EF2
,0x270133F0,0x62435A96,0x1FA75E8B,0x6F092FBE
,0x4A000D49,0x57AE1C70,0x004E2477,0x561E7E72
,0x468C0033,0x5DCC2402,0x78507AC6,0x58AF24C7
,0x0DF62D34,0x358A4708,0x3CFB1E11,0x2B71451C
,0x77A75295,0x56890721,0x0FEF75F3,0x120F24F1
,0x01990AE7,0x339C4452,0x27A15B8E,0x0BA7276D
,0x60DC1B7B,0x4F4B7F82,0x67DB7007,0x4F4A57D9
,0x621252E8,0x20532CFC,0x6A390306,0x18800423
,0x19F3778A,0x462316F0,0x56AE0937,0x43C2675C
,0x65CA45FD,0x0D604FF2,0x0BFD22CB,0x3AFE643B
,0x3BF67FA6,0x44623579,0x184031F8,0x32174F97
,0x4C6A092A,0x5FB50261,0x01650174,0x33634AF1
,0x712D18F4,0x6E997169,0x5DAB7AFE,0x7C2B2EE8
,0x6EDB75B4,0x5F836FB6,0x3C2A6DD6,0x292D05C2
,0x052244DB,0x149A5F4F,0x5D486540,0x331D15EA
,0x4F456920,0x483A699F,0x3B450F05,0x3B207C6C
,0x749D70FE,0x417461F6,0x62B031F1,0x2750577B
,0x29131533,0x588C3808,0x1AEF3456,0x0F3C00EC
,0x7DA74742,0x4B797A6C,0x5EBB3287,0x786558B8
,0x00ED4FF2,0x6269691E,0x24A2255F,0x62C11F7E
,0x2F8A7DCD,0x643B17FE,0x778318B8,0x253B60FE
,0x34BB63A3,0x5B03214F,0x5F1571F4,0x1A316E9F
,0x7ACF2704,0x28896838,0x18614677,0x1BF569EB
,0x0BA85EC9,0x6ACA6B46,0x1E43422A,0x514D5F0E
,0x413E018C,0x307626E9,0x01ED1DFA,0x49F46F5A
,0x461B642B,0x7D7007F2,0x13652657,0x6B160BC5
,0x65E04849,0x1F526E1C,0x5A0251B6,0x2BD73F69
,0x2DBF7ACD,0x51E63E80,0x5CF2670F,0x21CD0A03
,0x5CFF0261,0x33AE061E,0x3BB6345F,0x5D814A75
,0x257B5DF4,0x0A5C2C5B,0x16A45527,0x16F23945
,0xB3CBCD26,0xA1C800F6,0x2628FBCF,0xEBC70043
};

WORD _G_BYTESEEDS[]=
{
0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020
,0x0020,0x0028,0x0028,0x0028,0x0028,0x0028,0x0020,0x0020
,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020
,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020
,0x0048,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010
,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010
,0x0084,0x0084,0x0084,0x0084,0x0084,0x0084,0x0084,0x0084
,0x0084,0x0084,0x0010,0x0010,0x0010,0x0010,0x0010,0x0010
,0x0010,0x0181,0x0181,0x0181,0x0181,0x0181,0x0181,0x0101
,0x0101,0x0101,0x0101,0x0101,0x0101,0x0101,0x0101,0x0101
,0x0101,0x0101,0x0101,0x0101,0x0101,0x0101,0x0101,0x0101
,0x0101,0x0101,0x0101,0x0010,0x0010,0x0010,0x0010,0x0010
,0x0010,0x0182,0x0182,0x0182,0x0182,0x0182,0x0182,0x0102
,0x0102,0x0102,0x0102,0x0102,0x0102,0x0102,0x0102,0x0102
,0x0102,0x0102,0x0102,0x0102,0x0102,0x0102,0x0102,0x0102
,0x0102,0x0102,0x0102,0x0010,0x0010,0x0010,0x0010,0x0020
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
};

PBYTE G_BYTESEEDS = (PBYTE)_G_BYTESEEDS;



DWORD __declspec( naked ) GetCalc_Count(char *username)
{
  _asm
  {
/*00555F7C*/ MOV EAX,DWORD PTR SS:[ESP+4]  // EAX = USER_NAME
/*00555F80*/ TEST AL,3
/*00555F82*/ JNZ AA555FB1    //NO JUMP
AA555F84:
/*00555F84*/ MOV EDX,DWORD PTR DS:[EAX]
/*00555F86*/ ADD EAX,4
/*00555F89*/ MOV ECX,EDX
/*00555F8B*/ SUB EDX,1010101h
/*00555F91*/ AND EDX,80808080h
/*00555F97*/ JE AA555F84
/*00555F99*/ NOT ECX
/*00555F9B*/ AND EDX,ECX
/*00555F9D*/ JE AA555F84
/*00555F9F*/ TEST DL,DL
/*00555FA1*/ JNZ AA555FCB
/*00555FA3*/ TEST DH,DH
/*00555FA5*/ JNZ AA555FCC
/*00555FA7*/ TEST EDX,0FF0000h
/*00555FAD*/ JNZ AA555FCD
/*00555FAF*/ JMP AA555FCE
AA555FB1:
/*00555FB1*/ ADD EAX,4
/*00555FB4*/ TEST BYTE PTR DS:[EAX-4],0FFh
/*00555FB8*/ JE AA555FCB
/*00555FBA*/ TEST BYTE PTR DS:[EAX-3],0FFh
/*00555FBE*/ JE AA555FCC
/*00555FC0*/ TEST BYTE PTR DS:[EAX-2],0FFh
/*00555FC4*/ JE AA555FCD
/*00555FC6*/ DEC EAX
/*00555FC7*/ AND AL,0FCh
/*00555FC9*/ JMP AA555F84
AA555FCB:
/*00555FCB*/ DEC EAX
AA555FCC:
/*00555FCC*/ DEC EAX
AA555FCD:
/*00555FCD*/ DEC EAX
AA555FCE:
/*00555FCE*/ MOV ECX,DWORD PTR SS:[ESP+4]
/*00555FD2*/ DEC EAX
/*00555FD3*/ SUB EAX,ECX
/*00555FD5*/ RETN
  }
}

BYTE __declspec( naked ) GetCalcSeed(char seed)
{
  _asm{
  
/*0055C9D4*/ PUSH EBP
/*0055C9D5*/ MOV EBP,ESP
/*0055C9D7*/ MOV EAX,DWORD PTR SS:[EBP+8]  //MOVE EAX,PARAM1
/*0055C9DA*/ CMP EAX,-1        //IF EAX != FF
/*0055C9DD*/ JNZ AA55C9E4
/*0055C9DF*/ OR EAX,0xFFFFFFFF
/*0055C9E2*/ POP EBP
/*0055C9E3*/ RETN
AA55C9E4:
/*0055C9E4*/ XOR EDX,EDX    //EDX = 0
/*0055C9E6*/ MOV DL,AL    
/*0055C9E8*/ TEST BYTE PTR DS:[EDX*2+G_BYTESEEDS],2  //IF (! (59EF36(PARAM1*2) & 2) ) 
/*0055C9F0*/ JE AA55C9F9    // RETURN PARAM1;
/*0055C9F2*/ ADD EDX,-20h
/*0055C9F5*/ MOV EAX,EDX    // RETURN PARAM1-20
/*0055C9F7*/ POP EBP
/*0055C9F8*/ RETN
AA55C9F9:
/*0055C9F9*/ MOV EAX,EDX
/*0055C9FB*/ POP EBP
/*0055C9FC*/ RETN
  }
}


DWORD calckey(char * USER_NAME,BOOL bSth,BOOL CTRL1, BOOL CTRL2)
{
  DWORD tmpEDX,CALC_COUNT;
  DWORD RESULT = 0;
  DWORD tmp1,tmp2;
  BYTE SEED_BYTE;
  DWORD i;
  CALC_COUNT = GetCalc_Count(USER_NAME);
  if(CALC_COUNT <= 0)
    return 0;
  
  
  for(i=0;i<CALC_COUNT;i++)
  {
    SEED_BYTE = GetCalcSeed(USER_NAME[i]);
    

    if(bSth ==0)
    {
      
    }
    else
    {
      tmpEDX =  G_SEEDS[SEED_BYTE];      //1
      tmpEDX += RESULT;            //2
      tmpEDX ^=G_SEEDS[(SEED_BYTE +0x0D)&0xFF ];//3
      tmpEDX *=G_SEEDS[(SEED_BYTE +0x2F)&0xFF];//4
      
      tmp1 = (i*0x13) & 0xff;
      tmpEDX +=G_SEEDS[tmp1];//5;
      
      tmp1 = i+i*8;
      tmp2 = CTRL1;
      tmp2 = tmp2 <<4;
      tmp2 += CTRL1;
      tmp1 += tmp2;
      tmp1 &= 0xff;
      tmpEDX +=G_SEEDS[tmp1];//6
            
      tmp1 = (i*0x0D) & 0xff;
      tmp2 = CTRL2;
      tmp2 = tmp2 <<4;
      tmp2 -= CTRL2;
      tmp1 += tmp2;
      tmpEDX +=G_SEEDS[tmp1];//7
      RESULT = tmpEDX;
    }
      
  }
  
  return RESULT;
}      
BYTE __declspec( naked ) CALC_CTRL1(BYTE seedb)
{
  _asm{
/*004527B2*/  PUSH EBP
/*004527B3*/  MOV EBP,ESP
/*004527B5*/  PUSH ECX
/*004527B6*/  MOV AL,BYTE PTR SS:[EBP+8]
/*004527B9*/  XOR AL,0x18
/*004527BB*/  ADD AL,0x3D
/*004527BD*/  XOR AL,0xA7
/*004527BF*/  MOV BYTE PTR SS:[EBP-1],AL
/*004527C2*/  MOV AL,BYTE PTR SS:[EBP-1]
/*004527C5*/  POP ECX
/*004527C6*/  POP EBP
/*004527C7*/  RETN
  }
}

WORD __declspec( naked ) CALC_CTRL2(WORD seedw)
{
_asm
{
/*004527C8*/  PUSH EBP
/*004527C9*/  MOV EBP,ESP
/*004527CB*/  PUSH ECX
/*004527CC*/  MOV AX,WORD PTR SS:[EBP+8]    //param1
/*004527D0*/  XOR AX,7892h
/*004527D4*/  ADD AX,4D30h
/*004527D8*/  XOR AX,3421h      
/*004527DC*/  MOV WORD PTR SS:[EBP-2],AX
/*004527E0*/  MOVZX EAX,WORD PTR SS:[EBP-2]  //被除数
/*004527E4*/  MOV ECX,0Bh        //除数
/*        */
/*004527E9*/  CDQ
/*004527EA*/  IDIV ECX
/*004527EC*/  TEST EDX,EDX
/*004527EE*/  JNZ AA4527FF
/*004527F0*/  MOVZX EAX,WORD PTR SS:[EBP-2]
/*004527F4*/  MOV ECX,0Bh
/*004527F9*/  CDQ
/*004527FA*/  IDIV ECX    //
/*004527FC*/  POP ECX    //返回倍数,
/*004527FD*/  POP EBP
/*004527FE*/  RETN
AA4527FF:
/*004527FF*/  XOR EAX,EAX
/*00452801*/  POP ECX
/*00452802*/  POP EBP
/*00452803*/  RETN
}
}

CHAR INFO[][255]=
{
"*********************************************\n",
"**                                         **\n",
"**     KEYGEN FOR 010 Editor V1.3          **\n",
"**                                         **\n",
"**                                  BY YANG**\n",
"**                                2004.5.15**\n",
"**           ANY QUESTION ABOUT THIS KEYGEN**\n",
"**         PLEASE MAIL TO YHF@CHINAWEAL.COM**\n"
"*********************************************\n",
"GOT THE KEY SUCCESSFULLY,ENJOY IT! :) \n"
};


int main(int argc,char *arg[])
{


  
  DWORD KEYGEN = 0;
  CHAR USER_NAME[255]="";
  BYTE KEYS[8]={0};
  BYTE i,j,tmpa;
  WORD testword,tmpb;

  if(argc <2)
  {
    printf("Input A user Name please!\n");
    return 0;
  }

  for(i=1;i<argc;i++)
  {
    if(lstrlen(USER_NAME)!=0)
    {
      lstrcat(USER_NAME," ");
    }
    lstrcat(USER_NAME,arg[i]);
  }
  

  KEYGEN = calckey(USER_NAME,1,1,1);
  //printf("%X\n",KEYGEN);
  memcpy(&KEYS[4],&KEYGEN,sizeof(KEYGEN));
  KEYS[3] = 0x9C;
  
  for(i=0;i<255;i++)
  {
    tmpa = i;
    tmpa ^= KEYS[6];   //1ST XOR 7TH
    if(CALC_CTRL1(tmpa) == 1)
    {
      KEYS[0] = i;
      break;
    }
  }


  for(i=0;i<255;i++)
  {
    for(j=0;j<255;j++)
    {
      tmpa = i;
      tmpb = j;
      tmpa ^= KEYS[7]; //2ND XOR 8TH
      testword = 0;
      testword = tmpa;
      testword <<=8;

      tmpb ^= KEYS[5]; //3rd xor 6th
      testword |= tmpb;
      
      if(CALC_CTRL2(testword)==1)
      {
        KEYS[1] = i;
        KEYS[2] = j;
        for(j=0;j<10;j++)
        {
          printf("%s",INFO[j]);
        }
        printf("NAME: %s\n",USER_NAME);
        printf("KEYS: ");
        for(j = 0;j<8;j++)
        {
          if(KEYS[j]<0x10)
          {
            printf("0");
          }
          
          printf("%X",KEYS[j]);
          
          if((j+1)%2 == 0 && j!=7)
          {
            printf("-");
          }
        }
        printf("\n");
        
        return 0;
      }
      
      
    }
  }
  

  return 0;
}