MP3 CD 燒錄大師 V1.0

看雪資料發表於2015-11-15

MP3 CD 燒錄大師 V1.0

軟體大小:  499 KB
軟體語言:  簡體中文
軟體類別:  國產軟體 / 共享版 / 光碟燒錄
應用平臺:  Win9x/NT/2000/XP
介面預覽:  無
加入時間:  2002-10-28 15:55:42
下載次數:  5155
推薦等級:  

聯 系 人:  mp3_cd2001@yahoo.com.cn  
開 發 商:  http://mp3tocd.yeah.net/

軟體介紹:
   MP3 CD 燒錄大師經常在網上衝浪,下載了許多MP3歌曲,但卻只能在電腦上播放,這樣既不方便,效果也不是很好。現在有了MP3 CD燒錄大師,您就能輕鬆地把喜愛的MP3,WAV檔案的歌曲燒錄成自己的音樂CD,放在家裡的普通CD機,外出的CD隨身聽,甚至在自己的汽車音響上欣賞。MP3 CD燒錄大師能製作出極具個性的音樂CD,任意歌手任意歌曲的任意組合,幫你製作專輯大全,豐富您的CD收藏架,或者作為禮物贈予自己的愛人,好友!

【作者宣告】:本人只是對Crack感興趣,沒有其它目的。
【破解工具】:Ollydbg1.09 中文版


―――――――――――――――――――――――――――――
【過    程】:

       由於用慣了Ollydbg不想到98下面,就用Ollydbg試試直接找可以用的斷點,可惜沒有找到。不過這次我用了Ollydbg的搜尋〔字元參考〕功能,開啟搜尋字元參考功能視窗,發現有"%s"等格式字元,雙擊它就來到了00411488  |.  68 70CE4400   PUSH    44CE70    ; |format = "%s"這個地方,下中斷。填註冊資訊--使用者名稱:fxyang  試驗碼:7894561230123456  按註冊鍵會被OD中斷來到這裡:

00411460  /$  6A FF         PUSH    -1
00411462  |.  68 55AE4300   PUSH    43AE55                  
00411467  |.  64:A1 0000000>MOV     EAX, DWORD PTR FS:[0]
0041146D  |.  50            PUSH    EAX
0041146E  |.  64:8925 00000>MOV     DWORD PTR FS:[0], ESP
00411475  |.  81EC 90000000 SUB     ESP, 90
0041147B  |.  53            PUSH    EBX
0041147C  |.  55            PUSH    EBP
0041147D  |.  56            PUSH    ESI
0041147E  |.  57            PUSH    EDI
0041147F  |.  68 74CE4400   PUSH    44CE74                            

;  "abcdefABCDEFghijkqrs234tuvwxyzGHIJKLMNOPlmnopQRSTUVWXYZ1567890" <--字串表

00411484  |.  8D4424 60     LEA     EAX, DWORD PTR SS:[ESP+60]    
00411488  |.  68 70CE4400   PUSH    44CE70                 ; |format = "%s"
0041148D  |.  50            PUSH    EAX                    // 斷點
0041148E  |.  C78424 B40000>MOV     DWORD PTR SS:[ESP+B4], 1      
00411499  |.  FF15 84C44300 CALL    DWORD PTR DS:[43C484]        
0041149F  |.  83C4 0C       ADD     ESP, 0C
004114A2  |.  8D8C24 B00000>LEA     ECX, DWORD PTR SS:[ESP+B0]
004114A9  |.  51            PUSH    ECX
004114AA  |.  8D4C24 18     LEA     ECX, DWORD PTR SS:[ESP+18]
004114AE  |.  E8 2CCF0100   CALL    0042E3DF                    
004114B3  |.  A1 34E14400   MOV     EAX, DWORD PTR DS:[44E134]
004114B8  |.  894424 10     MOV     DWORD PTR SS:[ESP+10], EAX
004114BC  |.  894424 18     MOV     DWORD PTR SS:[ESP+18], EAX
004114C0  |.  8B5424 14     MOV     EDX, DWORD PTR SS:[ESP+14]
004114C4  |.  C68424 A80000>MOV     BYTE PTR SS:[ESP+A8], 4
004114CC  |.  8B42 F8       MOV     EAX, DWORD PTR DS:[EDX-8]
004114CF  |.  83F8 02       CMP     EAX, 2
004114D2  |.  0F8C 4D030000 JL      00411825                        
004114D8  |.  8D8424 B40000>LEA     EAX, DWORD PTR SS:[ESP+B4]
004114DF  |.  8D4C24 1C     LEA     ECX, DWORD PTR SS:[ESP+1C]
004114E3  |.  50            PUSH    EAX
004114E4  |.  E8 F6CE0100   CALL    0042E3DF                    
004114E9  |.  8B4C24 1C     MOV     ECX, DWORD PTR SS:[ESP+1C]
004114ED  |.  C68424 A80000>MOV     BYTE PTR SS:[ESP+A8], 5
004114F5  |.  8B41 F8       MOV     EAX, DWORD PTR DS:[ECX-8]
004114F8  |.  83F8 06       CMP     EAX, 6
004114FB  |.  0F8C 13030000 JL      00411814                
00411501  |.  8B5424 14     MOV     EDX, DWORD PTR SS:[ESP+14]
00411505  |.  8B42 F8       MOV     EAX, DWORD PTR DS:[EDX-8]
00411508  |.  83F8 04       CMP     EAX, 4
0041150B  |.  7D 09         JGE     SHORT 00411516                  
0041150D  |.  8D0440        LEA     EAX, DWORD PTR DS:[EAX+EAX*2]
00411510  |.  894424 30     MOV     DWORD PTR SS:[ESP+30], EAX
00411514  |.  EB 07         JMP     SHORT 0041151D                
00411516  |>  8D0C00        LEA     ECX, DWORD PTR DS:[EAX+EAX]
00411519  |.  894C24 30     MOV     DWORD PTR SS:[ESP+30], ECX
0041151D  |>  33FF          XOR     EDI, EDI
0041151F  |.  B3 09         MOV     BL, 9
00411521  |>  68 B4CE4400   /PUSH    44CEB4                          

;  ASCII "mp3tocdrecord"  <--引數

00411526  |.  8D4C24 24     |LEA     ECX, DWORD PTR SS:[ESP+24]
0041152A  |.  E8 A9D10100   |CALL    0042E6D8                      
0041152F  |.  33ED          |XOR     EBP, EBP
00411531  |.  6A 02         |PUSH    2
00411533  |.  8D5424 38     |LEA     EDX, DWORD PTR SS:[ESP+38]
00411537  |.  55            |PUSH    EBP
00411538  |.  52            |PUSH    EDX
00411539  |.  8D4C24 20     |LEA     ECX, DWORD PTR SS:[ESP+20]
0041153D  |.  C68424 B40000>|MOV     BYTE PTR SS:[ESP+B4], 6
00411545  |.  E8 AAA70100   |CALL    0042BCF4     <--取使用者名稱的前二位 “fx"
0041154A  |.  50            |PUSH    EAX
0041154B  |.  8D4C24 14     |LEA     ECX, DWORD PTR SS:[ESP+14]
0041154F  |.  C68424 AC0000>|MOV     BYTE PTR SS:[ESP+AC], 7
00411557  |.  E8 47D20100   |CALL    0042E7A3                        
0041155C  |.  8D4C24 34     |LEA     ECX, DWORD PTR SS:[ESP+34]
00411560  |.  C68424 A80000>|MOV     BYTE PTR SS:[ESP+A8], 6
00411568  |.  E8 FDD00100   |CALL    0042E66A                      
0041156D  |.  8B4424 10     |MOV     EAX, DWORD PTR SS:[ESP+10]  

;  EAX<--011A7528,(ASCII "fx")

00411571  |.  83C0 F8       |ADD     EAX, -8
00411574  |.  8338 00       |CMP     DWORD PTR DS:[EAX], 0  ;  DS:[011A7520]=02
00411577  |.  0F8E 40020000 |JLE     004117BD                        
0041157D  |>  8B10          |/MOV     EDX, DWORD PTR DS:[EAX]      
0041157F  |.  8B0D 34E14400 ||MOV     ECX, DWORD PTR DS:[44E134]    
00411585  |.  03EA          ||ADD     EBP, EDX              ;  EBP=0+2<--這裡在計數
00411587  |.  894C24 24     ||MOV     DWORD PTR SS:[ESP+24], ECX
0041158B  |.  896C24 44     ||MOV     DWORD PTR SS:[ESP+44], EBP
0041158F  |.  8B08          ||MOV     ECX, DWORD PTR DS:[EAX]
00411591  |.  33F6          ||XOR     ESI, ESI
00411593  |.  85C9          ||TEST    ECX, ECX
00411595  |.  C68424 A80000>||MOV     BYTE PTR SS:[ESP+A8], 8
0041159D  |.  897424 2C     ||MOV     DWORD PTR SS:[ESP+2C], ESI
004115A1  |.  0F8E B1010000 ||JLE     00411758                        
004115A7  |.  EB 04         ||JMP     SHORT 004115AD                
004115A9  |>  8B7424 2C     ||/MOV     ESI, DWORD PTR SS:[ESP+2C]
004115AD  |>  51            || PUSH    ECX                          
004115AE  |.  8D4C24 24     |||LEA     ECX, DWORD PTR SS:[ESP+24]
004115B2  |.  8BD4          |||MOV     EDX, ESP
004115B4  |.  896424 58     |||MOV     DWORD PTR SS:[ESP+58], ESP
004115B8  |.  6A 01         |||PUSH    1
004115BA  |.  56            |||PUSH    ESI
004115BB  |.  52            |||PUSH    EDX
004115BC  |.  E8 33A70100   |||CALL    0042BCF4      

;  AL=DS:[011A7488]=6D ('m')<--取引數的第一位

004115C1  |.  E8 AAFDFFFF   |||CALL    00411370        

;  <--取m在串中的偏移

004115C6  |.  8BE8          |||MOV     EBP, EAX      

// 第二次的引數不用固定的,是第一次計算的二位註冊碼

004115C8  |.  83C4 04       |||ADD     ESP, 4
004115CB  |.  85ED          |||TEST    EBP, EBP
004115CD  |.  0F8C 1F020000 |||JL      004117F2                      
004115D3  |.  51            |||PUSH    ECX
004115D4  |.  8D4C24 14     |||LEA     ECX, DWORD PTR SS:[ESP+14]
004115D8  |.  8BC4          |||MOV     EAX, ESP
004115DA  |.  896424 58     |||MOV     DWORD PTR SS:[ESP+58], ESP
004115DE  |.  6A 01         |||PUSH    1
004115E0  |.  56            |||PUSH    ESI
004115E1  |.  50            |||PUSH    EAX
004115E2  |.  E8 0DA70100   |||CALL    0042BCF4          ;  <--取使用者碼的第一位66('f')
004115E7  |.  E8 84FDFFFF   |||CALL    00411370          ;  <--使用者碼的第一位66('f')在串中的地址偏移
004115EC  |.  8BF0          |||MOV     ESI, EAX          ;  ESI=EAX=5
004115EE  |.  83C4 04       |||ADD     ESP, 4
004115F1  |.  85F6          |||TEST    ESI, ESI
004115F3  |.  0F8C F9010000 |||JL      004117F2                      
004115F9  |.  8D4C24 5C     |||LEA     ECX, DWORD PTR SS:[ESP+5C]    

;  ECX<--0012E0AC,  ASCII "abcdefABCDEFghijkqrs234tuvwxyzGHIJKLMNOPlmnopQRSTUVWXYZ1567890"<--表進入

004115FD  |.  51            |||PUSH    ECX
004115FE  |.  8D4C24 2C     |||LEA     ECX, DWORD PTR SS:[ESP+2C]
00411602  |.  E8 D1D00100   |||CALL    0042E6D8                      
00411607  |.  03F5          |||ADD     ESI, EBP                   ;  ESI=5('f')+29('m')=2E
00411609  |.  889C24 A80000>|||MOV     BYTE PTR SS:[ESP+A8], BL
00411610  |.  83FE 3D       |||CMP     ESI, 3D
00411613  |.  7E 03         |||JLE     SHORT 00411618              
00411615  |.  83EE 3E       |||SUB     ESI, 3E
00411618  |>  6A 01         |||PUSH    1
0041161A  |.  8D5424 44     |||LEA     EDX, DWORD PTR SS:[ESP+44]
0041161E  |.  56            |||PUSH    ESI
0041161F  |.  52            |||PUSH    EDX
00411620  |.  8D4C24 34     |||LEA     ECX, DWORD PTR SS:[ESP+34]
00411624  |.  E8 CBA60100   |||CALL    0042BCF4                    

;  <--用2E定址查詢串中的字元=52('R')

00411629  |.  50            |||PUSH    EAX
0041162A  |.  8D4424 28     |||LEA     EAX, DWORD PTR SS:[ESP+28]
0041162E  |.  8D4C24 5C     |||LEA     ECX, DWORD PTR SS:[ESP+5C]
00411632  |.  50            |||PUSH    EAX
00411633  |.  51            |||PUSH    ECX
00411634  |.  C68424 B40000>|||MOV     BYTE PTR SS:[ESP+B4], 0A
0041163C  |.  E8 58D20100   |||CALL    0042E899                    

;  R-->DS:[011A7618]--註冊碼的第一位

00411641  |.  50            |||PUSH    EAX
00411642  |.  8D4C24 28     |||LEA     ECX, DWORD PTR SS:[ESP+28]
00411646  |.  C68424 AC0000>|||MOV     BYTE PTR SS:[ESP+AC], 0B
0041164E  |.  E8 50D10100   |||CALL    0042E7A3                    
00411653  |.  8D4C24 58     |||LEA     ECX, DWORD PTR SS:[ESP+58]
00411657  |.  C68424 A80000>|||MOV     BYTE PTR SS:[ESP+A8], 0A
0041165F  |.  E8 06D00100   |||CALL    0042E66A                    
00411664  |.  8D4C24 40     |||LEA     ECX, DWORD PTR SS:[ESP+40]
00411668  |.  889C24 A80000>|||MOV     BYTE PTR SS:[ESP+A8], BL
0041166F  |.  E8 F6CF0100   |||CALL    0042E66A                    
00411674  |.  6A 01         |||PUSH    1
00411676  |.  8D5424 4C     |||LEA     EDX, DWORD PTR SS:[ESP+4C]
0041167A  |.  56            |||PUSH    ESI                            
0041167B  |.  52            |||PUSH    EDX
0041167C  |.  8D4C24 34     |||LEA     ECX, DWORD PTR SS:[ESP+34]
00411680  |.  E8 6FA60100   |||CALL    0042BCF4                    
00411685  |.  50            |||PUSH    EAX
00411686  |.  8D4424 1C     |||LEA     EAX, DWORD PTR SS:[ESP+1C]
0041168A  |.  8D4C24 54     |||LEA     ECX, DWORD PTR SS:[ESP+54]
0041168E  |.  50            |||PUSH    EAX
0041168F  |.  51            |||PUSH    ECX
00411690  |.  C68424 B40000>|||MOV     BYTE PTR SS:[ESP+B4], 0C
00411698  |.  E8 FCD10100   |||CALL    0042E899                      
0041169D  |.  50            |||PUSH    EAX
0041169E  |.  8D4C24 1C     |||LEA     ECX, DWORD PTR SS:[ESP+1C]
004116A2  |.  C68424 AC0000>|||MOV     BYTE PTR SS:[ESP+AC], 0D
004116AA  |.  E8 F4D00100   |||CALL    0042E7A3                      
004116AF  |.  8D4C24 50     |||LEA     ECX, DWORD PTR SS:[ESP+50]
004116B3  |.  C68424 A80000>|||MOV     BYTE PTR SS:[ESP+A8], 0C
004116BB  |.  E8 AACF0100   |||CALL    0042E66A                    
004116C0  |.  8D4C24 48     |||LEA     ECX, DWORD PTR SS:[ESP+48]
004116C4  |.  889C24 A80000>|||MOV     BYTE PTR SS:[ESP+A8], BL
004116CB  |.  E8 9ACF0100   |||CALL    0042E66A                      
004116D0  |.  83FF 04       |||CMP     EDI, 4
004116D3  |.  7D 56         |||JGE     SHORT 0041172B              
004116D5  |.  6A 01         |||PUSH    1
004116D7  |.  8D5424 40     |||LEA     EDX, DWORD PTR SS:[ESP+40]
004116DB  |.  56            |||PUSH    ESI
004116DC  |.  52            |||PUSH    EDX
004116DD  |.  8D4C24 34     |||LEA     ECX, DWORD PTR SS:[ESP+34]
004116E1  |.  E8 0EA60100   |||CALL    0042BCF4                      
004116E6  |.  8BF0          |||MOV     ESI, EAX
004116E8  |.  8BC7          |||MOV     EAX, EDI
004116EA  |.  6A 01         |||PUSH    1
004116EC  |.  50            |||PUSH    EAX
004116ED  |.  8D4424 40     |||LEA     EAX, DWORD PTR SS:[ESP+40]
004116F1  |.  50            |||PUSH    EAX
004116F2  |.  8D4C24 28     |||LEA     ECX, DWORD PTR SS:[ESP+28]
004116F6  |.  C68424 B40000>|||MOV     BYTE PTR SS:[ESP+B4], 0E
004116FE  |.  47            |||INC     EDI
004116FF  |.  E8 F0A50100   |||CALL    0042BCF4                    
00411704  |.  8B36          |||MOV     ESI, DWORD PTR DS:[ESI]
00411706  |.  8B00          |||MOV     EAX, DWORD PTR DS:[EAX]
00411708  |.  56            |||PUSH    ESI                          
00411709  |.  50            |||PUSH    EAX                          
0041170A  |.  E8 55BB0000   |||CALL    0041D264                      
0041170F  |.  83C4 08       |||ADD     ESP, 8
00411712  |.  8D4C24 38     |||LEA     ECX, DWORD PTR SS:[ESP+38]
00411716  |.  E8 4FCF0100   |||CALL    0042E66A                    
0041171B  |.  8D4C24 3C     |||LEA     ECX, DWORD PTR SS:[ESP+3C]
0041171F  |.  889C24 A80000>|||MOV     BYTE PTR SS:[ESP+A8], BL
00411726  |.  E8 3FCF0100   |||CALL    0042E66A                      
0041172B  |>  8D4C24 28     |||LEA     ECX, DWORD PTR SS:[ESP+28]
0041172F  |.  C68424 A80000>|||MOV     BYTE PTR SS:[ESP+A8], 8
00411737  |.  E8 2ECF0100   |||CALL    0042E66A                    ;  又取使用者名稱的二位
0041173C  |.  8B4C24 10     |||MOV     ECX, DWORD PTR SS:[ESP+10]  ;  ECX<--011A7528  ASCII "ya"
00411740  |.  8B4424 2C     |||MOV     EAX, DWORD PTR SS:[ESP+2C]
00411744  |.  40            |||INC     EAX
00411745  |.  8B51 F8       |||MOV     EDX, DWORD PTR DS:[ECX-8]
00411748  |.  894424 2C     |||MOV     DWORD PTR SS:[ESP+2C], EAX
0041174C  |.  3BC2          |||CMP     EAX, EDX
0041174E  |.^ 0F8C 55FEFFFF ||\JL      004115A9                   ;

<--這段迴圈把引數和使用者名稱的各位在字串中的偏移量相加做指標在字串中取字元做註冊碼

00411754  |.  8B6C24 44     ||MOV     EBP, DWORD PTR SS:[ESP+44]
00411758  |>  8D5424 24     ||LEA     EDX, DWORD PTR SS:[ESP+24]
0041175C  |.  8D4C24 20     ||LEA     ECX, DWORD PTR SS:[ESP+20]
00411760  |.  52            ||PUSH    EDX
00411761  |.  E8 3DD00100   ||CALL    0042E7A3                      
00411766  |.  6A 02         ||PUSH    2
00411768  |.  8D4424 50     ||LEA     EAX, DWORD PTR SS:[ESP+50]
0041176C  |.  55            ||PUSH    EBP
0041176D  |.  50            ||PUSH    EAX
0041176E  |.  8D4C24 20     ||LEA     ECX, DWORD PTR SS:[ESP+20]
00411772  |.  E8 7DA50100   ||CALL    0042BCF4                    ;  <--取了最後二位("ng")
00411777  |.  50            ||PUSH    EAX
00411778  |.  8D4C24 14     ||LEA     ECX, DWORD PTR SS:[ESP+14]
0041177C  |.  C68424 AC0000>||MOV     BYTE PTR SS:[ESP+AC], 0F
00411784  |.  E8 1AD00100   ||CALL    0042E7A3                      
00411789  |.  8D4C24 4C     ||LEA     ECX, DWORD PTR SS:[ESP+4C]
0041178D  |.  C68424 A80000>||MOV     BYTE PTR SS:[ESP+A8], 8
00411795  |.  E8 D0CE0100   ||CALL    0042E66A                      
0041179A  |.  8D4C24 24     ||LEA     ECX, DWORD PTR SS:[ESP+24]
0041179E  |.  C68424 A80000>||MOV     BYTE PTR SS:[ESP+A8], 6
004117A6  |.  E8 BFCE0100   ||CALL    0042E66A                    
004117AB  |.  8B4C24 10     ||MOV     ECX, DWORD PTR SS:[ESP+10]  ;  ECX<--011A7528  ASCII "ng"
004117AF  |.  8D41 F8       ||LEA     EAX, DWORD PTR DS:[ECX-8]
004117B2  |.  8B49 F8       ||MOV     ECX, DWORD PTR DS:[ECX-8]
004117B5  |.  85C9          ||TEST    ECX, ECX
004117B7  |.^ 0F8F C0FDFFFF |\JG      0041157D                  

;<--這個迴圈檢查註冊碼第一部分的長度等於使用者名稱的長度
   
004117BD  |>  8B4424 18     |MOV     EAX, DWORD PTR SS:[ESP+18] ;  EAX<--011A7528  ASCII "RDgDZ3vYNaz3"
004117C1  |.  8B5424 30     |MOV     EDX, DWORD PTR SS:[ESP+30] // 計算註冊碼連線後的字串
004117C5  |.  3950 F8       |CMP     DWORD PTR DS:[EAX-8], EDX  <--計算完成就出來
004117C8  |.  0F8D D0000000 |JGE     0041189E                      
004117CE  |.  8D4424 18     |LEA     EAX, DWORD PTR SS:[ESP+18]
004117D2  |.  8D4C24 14     |LEA     ECX, DWORD PTR SS:[ESP+14]
004117D6  |.  50            |PUSH    EAX
004117D7  |.  E8 C7CF0100   |CALL    0042E7A3                      
004117DC  |.  8D4C24 20     |LEA     ECX, DWORD PTR SS:[ESP+20]
004117E0  |.  C68424 A80000>|MOV     BYTE PTR SS:[ESP+A8], 5
004117E8  |.  E8 7DCE0100   |CALL    0042E66A                      
004117ED  |.^ E9 2FFDFFFF   \JMP     00411521

; <--這個迴圈檢查註冊碼的第二部分和第二次計算的引數分配。  
                 
004117F2  |>  8D4C24 24     LEA     ECX, DWORD PTR SS:[ESP+24]
004117F6  |.  C68424 A80000>MOV     BYTE PTR SS:[ESP+A8], 6
004117FE  |.  E8 67CE0100   CALL    0042E66A                    
00411803  |>  8D4C24 20     LEA     ECX, DWORD PTR SS:[ESP+20]
00411807  |.  C68424 A80000>MOV     BYTE PTR SS:[ESP+A8], 5
0041180F  |.  E8 56CE0100   CALL    0042E66A                        
00411814  |>  8D4C24 1C     LEA     ECX, DWORD PTR SS:[ESP+1C]
00411818  |.  C68424 A80000>MOV     BYTE PTR SS:[ESP+A8], 4
00411820  |.  E8 45CE0100   CALL    0042E66A                        
00411825  |>  8D4C24 18     LEA     ECX, DWORD PTR SS:[ESP+18]
00411829  |.  C68424 A80000>MOV     BYTE PTR SS:[ESP+A8], 3
00411831  |.  E8 34CE0100   CALL    0042E66A                      
00411836  |.  8D4C24 10     LEA     ECX, DWORD PTR SS:[ESP+10]
0041183A  |.  C68424 A80000>MOV     BYTE PTR SS:[ESP+A8], 2
00411842  |.  E8 23CE0100   CALL    0042E66A                      
00411847  |.  8D4C24 14     LEA     ECX, DWORD PTR SS:[ESP+14]
0041184B  |.  C68424 A80000>MOV     BYTE PTR SS:[ESP+A8], 1
00411853  |.  E8 12CE0100   CALL    0042E66A                      
00411858  |.  8D8C24 B00000>LEA     ECX, DWORD PTR SS:[ESP+B0]
0041185F  |.  C68424 A80000>MOV     BYTE PTR SS:[ESP+A8], 0
00411867  |.  E8 FECD0100   CALL    0042E66A                        
0041186C  |.  8D8C24 B40000>LEA     ECX, DWORD PTR SS:[ESP+B4]
00411873  |.  C78424 A80000>MOV     DWORD PTR SS:[ESP+A8], -1
0041187E  |.  E8 E7CD0100   CALL    0042E66A                      
00411883  |.  32C0          XOR     AL, AL
00411885  |>  8B8C24 A00000>MOV     ECX, DWORD PTR SS:[ESP+A0]
0041188C  |.  5F            POP     EDI
0041188D  |.  5E            POP     ESI
0041188E  |.  5D            POP     EBP
0041188F  |.  64:890D 00000>MOV     DWORD PTR FS:[0], ECX
00411896  |.  5B            POP     EBX
00411897  |.  81C4 9C000000 ADD     ESP, 9C
0041189D  |.  C3            RETN
0041189E  |>  8B4C24 1C     MOV     ECX, DWORD PTR SS:[ESP+1C]
004118A2  |.  50            PUSH    EAX             ; /EAX= 011A7528 ASCII "RDgDZ3vYNaz3"
004118A3  |.  51            PUSH    ECX             ; |ECX = 011A6F38 ASCII "RDgD789456"
004118A4  |.  E8 BBB90000   CALL    0041D264        ; \<--註冊碼的比較

====>F8
----註冊碼的比較-----
|
0041D264  /$  55            PUSH    EBP
0041D265  |.  8BEC          MOV     EBP, ESP
0041D267  |.  833D 1C5D4800>CMP     DWORD PTR DS:[485D1C], 0
0041D26E  |.  53            PUSH    EBX
0041D26F  |.  56            PUSH    ESI
0041D270  |.  57            PUSH    EDI
0041D271  |.  75 12         JNZ     SHORT 0041D285                ;  mp32cd.0041D285
0041D273  |.  FF75 0C       PUSH    [ARG.2]
0041D276  |.  FF75 08       PUSH    [ARG.1]
0041D279  |.  E8 F2310000   CALL    00420470                      ;  mp32cd.00420470
0041D27E  |.  59            POP     ECX
0041D27F  |.  59            POP     ECX
0041D280  |.  E9 89000000   JMP     0041D30E                      ;  mp32cd.0041D30E
0041D285  |>  6A 19         PUSH    19
0041D287  |.  E8 6E310000   CALL    004203FA                      ;  mp32cd.004203FA
0041D28C  |.  8B75 0C       MOV     ESI, [ARG.2]
0041D28F  |.  8B7D 08       MOV     EDI, [ARG.1]
0041D292  |.  59            POP     ECX
0041D293  |>  66:0FB60F     /MOVZX   CX, BYTE PTR DS:[EDI]        

;  CX<--=37 ('7')<--試驗碼的各位

0041D297  |.  0FB6C1        |MOVZX   EAX, CL                  
0041D29A  |.  47            |INC     EDI
0041D29B  |.  894D 0C       |MOV     [ARG.2], ECX
0041D29E  |.  F680 215E4800>|TEST    BYTE PTR DS:[EAX+485E21], 4
0041D2A5  |.  74 16         |JE      SHORT 0041D2BD               ;  mp32cd.0041D2BD
0041D2A7  |.  8A07          |MOV     AL, BYTE PTR DS:[EDI]
0041D2A9  |.  84C0          |TEST    AL, AL
0041D2AB  |.  75 06         |JNZ     SHORT 0041D2B3               ;  mp32cd.0041D2B3
0041D2AD  |.  8365 0C 00    |AND     [ARG.2], 0
0041D2B1  |.  EB 0A         |JMP     SHORT 0041D2BD               ;  mp32cd.0041D2BD
0041D2B3  |>  33D2          |XOR     EDX, EDX
0041D2B5  |.  47            |INC     EDI
0041D2B6  |.  8AF1          |MOV     DH, CL
0041D2B8  |.  8AD0          |MOV     DL, AL
0041D2BA  |.  8955 0C       |MOV     [ARG.2], EDX
0041D2BD  |>  66:0FB61E     |MOVZX   BX, BYTE PTR DS:[ESI]      

;  BX<--=52 ('R')<--註冊碼的各位

0041D2C1  |.  0FB6C3        |MOVZX   EAX, BL                    
0041D2C4  |.  46            |INC     ESI
0041D2C5  |.  F680 215E4800>|TEST    BYTE PTR DS:[EAX+485E21], 4
0041D2CC  |.  74 13         |JE      SHORT 0041D2E1               ;  mp32cd.0041D2E1
0041D2CE  |.  8A06          |MOV     AL, BYTE PTR DS:[ESI]
0041D2D0  |.  84C0          |TEST    AL, AL
0041D2D2  |.  75 04         |JNZ     SHORT 0041D2D8               ;  mp32cd.0041D2D8
0041D2D4  |.  33DB          |XOR     EBX, EBX
0041D2D6  |.  EB 09         |JMP     SHORT 0041D2E1               ;  mp32cd.0041D2E1
0041D2D8  |>  33C9          |XOR     ECX, ECX
0041D2DA  |.  46            |INC     ESI
0041D2DB  |.  8AEB          |MOV     CH, BL
0041D2DD  |.  8AC8          |MOV     CL, AL
0041D2DF  |.  8BD9          |MOV     EBX, ECX
0041D2E1  |>  66:395D 0C    |CMP     WORD PTR SS:[EBP+C], BX      <--在這裡比較
0041D2E5      75 09         JNZ     SHORT 0041D2F0                
0041D2E7  |.  66:837D 0C 00 |CMP     WORD PTR SS:[EBP+C], 0
0041D2EC  |.  74 16         |JE      SHORT 0041D304              
0041D2EE  |.^ EB A3         \JMP     SHORT 0041D293              
0041D2F0  |>  6A 19         PUSH    19
0041D2F2  |.  E8 64310000   CALL    0042045B                    
0041D2F7  |.  66:3B5D 0C    CMP     BX, WORD PTR SS:[EBP+C]      
0041D2FB  |.  59            POP     ECX                        
0041D2FC  |.  1BC0          SBB     EAX, EAX
0041D2FE  |.  83E0 02       AND     EAX, 2
0041D301  |.  48            DEC     EAX                        <--賦失敗標誌            
0041D302  |.  EB 0A         JMP     SHORT 0041D30E              
0041D304  |>  6A 19         PUSH    19                          
0041D306  |.  E8 50310000   CALL    0042045B                  
0041D30B  |.  59            POP     ECX
0041D30C  |.  33C0          XOR     EAX, EAX                   <--賦成功標誌
0041D30E  |>  5F            POP     EDI
0041D30F  |.  5E            POP     ESI
0041D310  |.  5B            POP     EBX
0041D311  |.  5D            POP     EBP
0041D312  \.  C3            RETN

====================================================

註冊碼的演算法跟蹤已經完成,總結一下:

   條件---註冊碼的長度是使用者名稱的二倍

   註冊碼的計算方法:
     1.首先取固定引數'mp"和使用者名稱的前二位'fx',把引數的第一位和使用者名稱的第一位在字串表中的偏移量相加作為查表的指標,在字串表中取相應位的字元做註冊碼的第一位。
     第二位的計算同上。
     2.第二次取使用者名稱的第二個倆位,引數則用第一次計算的二位註冊碼,計算方法同上。
      直到使用者名稱計算完,得到的是註冊碼的第一部分。
     3.註冊碼的後一半的計算同第一部分的計算方法一樣(用一個迴圈計算的),但是引數改變了:
          1.)首先取固定引數'mp'二位和第一次計算的字串的前二位,進行同第一步一樣的計算。
          2.)第二次取第一次計算的字串的第二個倆位和上面計算的二位註冊碼進行相同的計算,
          直到第一次計算的字串用完,得到的字串就是註冊碼的後一半。
     4.)把上面二次的字串連線起來就是正確的註冊碼

PowerBoy兄說寫這個軟體的演算法序號產生器能提高演算法的分析能力,呵呵我用了將近二天的時間完成了它的演算法序號產生器。感謝PowerBoy兄的鞭策。

這是序號產生器的vb原始碼:

------vb6.0測試通過-----
|
Private Sub Command1_Click()
Dim e As Integer
Dim f As Integer
Dim g As Integer
Dim h As Integer
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim l As String
Dim m As String
Dim w As Integer
Dim n As Integer
Dim nametemp2 As String
Dim nametemp3 As String
Dim nametemp As String
Dim regname As String
Dim nametemp1 As String
Dim nametemp0 As String
Dim nametemp4 As String
Dim nametemp5 As String
Dim a As String
Dim b As String
Dim c As String
strtmp1 = "abcdefABCDEFghijkqrs234tuvwxyzGHIJKLMNOPlmnopQRSTUVWXYZ1567890"
'定義一個字串表
regname = Text1.Text    '取得註冊名
reglen = Len(regname)   '取得註冊名的長度
If reglen < 3 Then
MsgBox ("請輸入長度大於三位的使用者名稱")
GoTo tc
Else
End If
i = 1
begin:
l = Mid(regname, i, 1) '取使用者名稱的各位字元
e = 1
bj: m = Mid(strtmp1, e, 1) '在串中查詢使用者名稱字元的偏移量
j = StrComp(l, m)
If j <> 0 Then
e = e + 1                 'e用於計數
GoTo bj
Else
End If                    '這個迴圈用於計算偏移量

If i = 1 Then
e = e + 41
 If e > 62 Then
    e = e - 62
   Else
 End If
nametemp = Mid(strtmp1, e, 1)
i = i + 1
GoTo begin
Else
End If
e = e + 44
If e > 62 Then
e = e - 62
Else
End If
nametemp1 = Mid(strtmp1, e, 1)
nametemp0 = nametemp + nametemp1

'第二個關鍵計算

i = 3
k = 1

begin1:
b = Mid(regname, i, 1) '取使用者名稱的各位字元
e = 1
bj2: m = Mid(strtmp1, e, 1) '在串中查詢使用者名稱字元的偏移量
j = StrComp(b, m)
If j <> 0 Then
e = e + 1                 'e用於計數
GoTo bj2
Else
End If                    '這個迴圈用於計算偏移量

c = Mid(nametemp0, k, 1)            '取第一次計算的值
f = 1
bj3: m = Mid(strtmp1, f, 1) '在串中查詢使用者名稱字元的偏移量
j = StrComp(c, m)
If j <> 0 Then
f = f + 1                 'e用於計數
GoTo bj3
Else
End If                    '這個迴圈用於計算偏移量

e = e + f - 1
 If e > 62 Then
    e = e - 62
   Else
 End If
 
nametemp3 = Mid(strtmp1, e, 1)
nametemp0 = nametemp0 + nametemp3
i = i + 1
k = k + 1

If Len(nametemp0) < reglen Then
GoTo begin1
Else
End If

If Len(nametemp0) < reglen Then
GoTo begin1
Else
End If
'到這裡完成一半的計算
'下面可是後一半的計算
'====================================================
i = 1
begin7:
l = Mid(nametemp0, i, 1) '取使用者名稱的各位字元
e = 1
bj7: m = Mid(strtmp1, e, 1) '在串中查詢使用者名稱字元的偏移量
j = StrComp(l, m)
If j <> 0 Then
e = e + 1                 'e用於計數
GoTo bj7
Else
End If                    '這個迴圈用於計算偏移量

If i = 1 Then
e = e + 41
 If e > 62 Then
    e = e - 62
   Else
 End If
nametemp = Mid(strtmp1, e, 1)
i = i + 1
GoTo begin7
Else
End If
e = e + 44
If e > 62 Then
e = e - 62
Else
End If
nametemp1 = Mid(strtmp1, e, 1)
nametemp4 = nametemp + nametemp1

'第二個關鍵計算

w = 3
n = 1

begin8:
b = Mid(nametemp0, w, 1) '取第一次計算字串的各位字元
e = 1
bj8: m = Mid(strtmp1, e, 1) '在串中查詢字元的偏移量
j = StrComp(b, m)
If j <> 0 Then
e = e + 1                 'e用於計數
GoTo bj8
Else
End If                    '這個迴圈用於計算偏移量

c = Mid(nametemp4, n, 1)   '取第一次計算的值
f = 1
bj9: m = Mid(strtmp1, f, 1) '在串中查詢字元的偏移量
j = StrComp(c, m)
If j <> 0 Then
f = f + 1                 'e用於計數
GoTo bj9
Else
End If                    '這個迴圈用於計算偏移量

e = e + f - 1
 If e > 62 Then
    e = e - 62
   Else
 End If
 
nametemp5 = Mid(strtmp1, e, 1)     '在串中查詢符合條件的字元
nametemp4 = nametemp4 + nametemp5  '連線成註冊碼的後半部分
w = w + 1
n = n + 1

If Len(nametemp4) < reglen Then
GoTo begin8
Else
End If


Text2.Text = nametemp0 + nametemp4  '二個部分連線成正確的註冊碼

tc: End Sub

Private Sub Command2_Click()
End
End Sub


由於對程式語言不熟悉,可能存在錯誤。請大家指正,謝謝。


                                              by  fxyang
           
       
                                                2003.4.30

相關文章