回溯設斷法破解中華燈謎V2004 build 02.01

看雪資料發表於2004-06-15

【破解作者】 blue_devil_bomb[DFCG][BCG]
【作者郵箱】 ninesunnine@sina.com
【作者主頁】 www.chinadfcg.com
【使用工具】 peid OllyDbg1.10
【破解平臺】 Win2000
【軟體名稱】 中華燈謎V2004 build 02.01
【下載地址】 http://laofuzi.3322.net 
【軟體簡介】 〖中華燈謎〗軟體是目前國產最好的燈謎軟體,軟體受到數十家刊物的特別撰文推薦。
             軟體中整合的燈謎類別齊全,燈謎條數可能是一個足以令你目瞪口呆的數字。
             軟體支援燈謎的模糊搜尋、各方式排序、隨時新增、修改、刪除等,使用簡單,功能強大。
【軟體大小】 1.43MB
【加殼方式】 未加殼
【破解宣告】 我是一隻小菜鳥,偶得一點心得,願與大家分享:)
--------------------------------------------------------------------------------
【破解內容】



    用PEID檢視為Borland Dephi 6.0 or 7.0本想用DEDE來破之,可由於本人不太會用,且由於沒有在DEDE中

找到很有用的資訊
於是就使出我的最愛OLLYDBG 1.10。
    我們知道Borland Dephi對於我們常用的斷點是無效的,這裡我採用的是回溯設斷法找註冊演算法。
    何謂回溯設斷法就是我們依據一定的資訊找到一個有用的斷點後,依據呼叫的CALL來逐步找到呼叫的源,

在源上
下斷就會找到我們輸入資訊的運算函式。
    利用回溯設斷法我們設到如下斷點,在訂單號中輸入1234,註冊碼中輸入1234567890點選確認輸入中斷於

如下:
0052D068  /. 55             PUSH EBP
0052D069  |. 8BEC           MOV EBP,ESP
0052D06B  |. B9 17000000    MOV ECX,17
0052D070  |> 6A 00          /PUSH 0
0052D072  |. 6A 00          |PUSH 0
0052D074  |. 49             |DEC ECX
0052D075  |.^75 F9          \JNZ SHORT zhdm.0052D070
0052D077  |. 53             PUSH EBX
0052D078  |. 56             PUSH ESI
0052D079  |. 8BD8           MOV EBX,EAX
0052D07B  |. 33C0           XOR EAX,EAX
0052D07D  |. 55             PUSH EBP
0052D07E  |. 68 DED25200    PUSH zhdm.0052D2DE
0052D083  |. 64:FF30        PUSH DWORD PTR FS:[EAX]
0052D086  |. 64:8920        MOV DWORD PTR FS:[EAX],ESP
0052D089  |. 68 80000000    PUSH 80                                  ; /BufSize = 80 (128.)
0052D08E  |. 8D85 7BFFFFFF  LEA EAX,DWORD PTR SS:[EBP-85]            ; |
0052D094  |. 50             PUSH EAX                                 ; |Buffer
0052D095  |. E8 6AA1EDFF    CALL <JMP.&kernel32.GetSystemDirectoryA> ; \GetSystemDirectoryA
0052D09A  |. 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-4]
0052D09D  |. 8D95 7BFFFFFF  LEA EDX,DWORD PTR SS:[EBP-85]
0052D0A3  |. B9 81000000    MOV ECX,81
0052D0A8  |. E8 2F79EDFF    CALL zhdm.004049DC
0052D0AD  |. 8D95 74FFFFFF  LEA EDX,DWORD PTR SS:[EBP-8C]
0052D0B3  |. 8B83 84030000  MOV EAX,DWORD PTR DS:[EBX+384]
0052D0B9  |. E8 0E6EF1FF    CALL zhdm.00443ECC                       ;返回輸入註冊碼長度
0052D0BE  |. 83BD 74FFFFFF >CMP DWORD PTR SS:[EBP-8C],0              ; 輸入的註冊碼是否為空
0052D0C5  |. 74 1A          JE SHORT zhdm.0052D0E1                   ;為空報警
0052D0C7  |. 8D95 70FFFFFF  LEA EDX,DWORD PTR SS:[EBP-90] 
0052D0CD  |. 8B83 7C030000  MOV EAX,DWORD PTR DS:[EBX+37C]
0052D0D3  |. E8 F46DF1FF    CALL zhdm.00443ECC                       ;返回輸入的訂單號
0052D0D8  |. 83BD 70FFFFFF >CMP DWORD PTR SS:[EBP-90],0              ;輸入的訂單號是否為空
0052D0DF  |. 75 15          JNZ SHORT zhdm.0052D0F6                  ;為空報警
0052D0E1  |> BA F0D25200    MOV EDX,zhdm.0052D2F0
0052D0E6  |. 8B83 BC030000  MOV EAX,DWORD PTR DS:[EBX+3BC]
0052D0EC  |. E8 577FFDFF    CALL zhdm.00505048
0052D0F1  |. E9 6B010000    JMP zhdm.0052D261
0052D0F6  |> 8D95 6CFFFFFF  LEA EDX,DWORD PTR SS:[EBP-94]
0052D0FC  |. 8B83 84030000  MOV EAX,DWORD PTR DS:[EBX+384]
0052D102  |. E8 C56DF1FF    CALL zhdm.00443ECC
0052D107  |. 8B85 6CFFFFFF  MOV EAX,DWORD PTR SS:[EBP-94]            ;將輸入的註冊碼放入EAX
0052D10D  |. 50             PUSH EAX
0052D10E  |. 8D95 60FFFFFF  LEA EDX,DWORD PTR SS:[EBP-A0]
0052D114  |. 8B83 7C030000  MOV EAX,DWORD PTR DS:[EBX+37C]
0052D11A  |. E8 AD6DF1FF    CALL zhdm.00443ECC
0052D11F  |. 8B85 60FFFFFF  MOV EAX,DWORD PTR SS:[EBP-A0]            ;將輸入的訂單號放入EAX
0052D125  |. E8 5AC4EDFF    CALL zhdm.00409584                       ; 訂單號的值由DEC到HEX形式放

入EAX
0052D12A  |. B9 15030000    MOV ECX,315                   
0052D12F  |. 99             CDQ
0052D130  |. F7F9           IDIV ECX                                 ;EDX=EAX%ECX;EAX=EAX/ECX
0052D132  |. 8BC2           MOV EAX,EDX                              ;EAX=EDX
0052D134  |. 8D95 64FFFFFF  LEA EDX,DWORD PTR SS:[EBP-9C]
0052D13A  |. E8 E1C3EDFF    CALL zhdm.00409520                       ; HexToDec
0052D13F  |. FFB5 64FFFFFF  PUSH DWORD PTR SS:[EBP-9C]               ; ECX中的HexToDec值,也就是

餘數的十進位制值(後面用)=Rushu
0052D145  |. 8D95 54FFFFFF  LEA EDX,DWORD PTR SS:[EBP-AC]
0052D14B  |. 8B83 7C030000  MOV EAX,DWORD PTR DS:[EBX+37C]
0052D151  |. E8 766DF1FF    CALL zhdm.00443ECC                       ; 訂單號長度存入EAX
0052D156  |. 8B85 54FFFFFF  MOV EAX,DWORD PTR SS:[EBP-AC]            ; 訂單號放入EAX
0052D15C  |. E8 23C4EDFF    CALL zhdm.00409584                       ; DecToHex十進位制變十六進位制放

入EAX
0052D161  |. 8D95 58FFFFFF  LEA EDX,DWORD PTR SS:[EBP-A8]
0052D167  |. E8 C4E0FFFF    CALL zhdm.0052B230                       ; 處理上面的值過程如下:
    {*********************CALL zhdm.0052b230
      0052B230  /$ 55             PUSH EBP
      0052B231  |. 8BEC           MOV EBP,ESP
      0052B233  |. 33C9           XOR ECX,ECX
      0052B235  |. 51             PUSH ECX
      0052B236  |. 51             PUSH ECX
      0052B237  |. 51             PUSH ECX
      0052B238  |. 51             PUSH ECX
      0052B239  |. 53             PUSH EBX
      0052B23A  |. 56             PUSH ESI
      0052B23B  |. 8BF2           MOV ESI,EDX
      0052B23D  |. 8BD8           MOV EBX,EAX
      0052B23F  |. 33C0           XOR EAX,EAX
      0052B241  |. 55             PUSH EBP
      0052B242  |. 68 00B35200    PUSH zhdm.0052B300
      0052B247  |. 64:FF30        PUSH DWORD PTR FS:[EAX]
      0052B24A  |. 64:8920        MOV DWORD PTR FS:[EAX],ESP
      0052B24D  |. 81F3 F1250B00  XOR EBX,0B25F1                           ;  訂單號值

^0xB25F1=Blue
      0052B253  |. 8BC3           MOV EAX,EBX
      0052B255  |. 33D2           XOR EDX,EDX
      0052B257  |. 52             PUSH EDX                                 ; /Arg2 => 00000000
      0052B258  |. 50             PUSH EAX                                 ; |Arg1
      0052B259  |. 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-4]             ; |
      0052B25C  |. E8 EFE2EDFF    CALL zhdm.00409550                       ; \zhdm.00409550
      0052B261  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]             ; Blue值 HexToDEC 

=Blue
      0052B264  |. 0FB600         MOVZX EAX,BYTE PTR DS:[EAX]              ; Blue[0]
      0052B267  |. 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]             ; 
      0052B26A  |. 0FB652 01      MOVZX EDX,BYTE PTR DS:[EDX+1]            ; Blue[1]
      0052B26E  |. 03C2           ADD EAX,EDX                              ; S1=Blue1[0]+Blue[1];
      0052B270  |. B9 05000000    MOV ECX,5
      0052B275  |. 99             CDQ
      0052B276  |. F7F9           IDIV ECX
      0052B278  |. 80C2 34        ADD DL,34                                ; DL=S1%5;
      0052B27B  |. 8855 F8        MOV BYTE PTR SS:[EBP-8],DL               ; Save S1-->[ebp-8]
      0052B27E  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
      0052B281  |. 0FB640 02      MOVZX EAX,BYTE PTR DS:[EAX+2]            ; Blue[2]
      0052B285  |. 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]
      0052B288  |. 0FB652 03      MOVZX EDX,BYTE PTR DS:[EDX+3]            ; Blue[3]
      0052B28C  |. 03C2           ADD EAX,EDX                              ; S2=Blue[2]+Blue[3];
      0052B28E  |. B9 05000000    MOV ECX,5
      0052B293  |. 99             CDQ
      0052B294  |. F7F9           IDIV ECX
      0052B296  |. 8BDA           MOV EBX,EDX
      0052B298  |. 80C3 33        ADD BL,33                                ; BL=S2%5;
      0052B29B  |. 885D F9        MOV BYTE PTR SS:[EBP-7],BL               ; Save BL->[EBP-7]
      0052B29E  |. 8D45 F4        LEA EAX,DWORD PTR SS:[EBP-C]
      0052B2A1  |. 8A55 F8        MOV DL,BYTE PTR SS:[EBP-8]               ; 
      0052B2A4  |. E8 AB96EDFF    CALL zhdm.00404954
      0052B2A9  |. 8B45 F4        MOV EAX,DWORD PTR SS:[EBP-C]
      0052B2AC  |. 8D55 FC        LEA EDX,DWORD PTR SS:[EBP-4]
      0052B2AF  |. B9 1B000000    MOV ECX,1B
      0052B2B4  |. E8 539AEDFF    CALL zhdm.00404D0C                    ;S1值聯接至Blue串後=Blue1
      0052B2B9  |. 8D45 F0        LEA EAX,DWORD PTR SS:[EBP-10]
      0052B2BC  |. 8BD3           MOV EDX,EBX
      0052B2BE  |. E8 9196EDFF    CALL zhdm.00404954                      
      0052B2C3  |. 8B45 F0        MOV EAX,DWORD PTR SS:[EBP-10]
      0052B2C6  |. 8D55 FC        LEA EDX,DWORD PTR SS:[EBP-4]
      0052B2C9  |. B9 19000000    MOV ECX,19
      0052B2CE  |. E8 399AEDFF    CALL zhdm.00404D0C                    ;S2值聯接至Blue1串後

=Blue1
      0052B2D3  |. 8BC6           MOV EAX,ESI
      0052B2D5  |. 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]          ;EDX指向Blue1地址指標
      0052B2D8  |. E8 EB94EDFF    CALL zhdm.004047C8
      0052B2DD  |. 33C0           XOR EAX,EAX
      0052B2DF  |. 5A             POP EDX
      0052B2E0  |. 59             POP ECX
      0052B2E1  |. 59             POP ECX
      0052B2E2  |. 64:8910        MOV DWORD PTR FS:[EAX],EDX
      0052B2E5  |. 68 07B35200    PUSH zhdm.0052B307
      0052B2EA  |> 8D45 F0        LEA EAX,DWORD PTR SS:[EBP-10]
      0052B2ED  |. BA 02000000    MOV EDX,2
      0052B2F2  |. E8 A194EDFF    CALL zhdm.00404798
      0052B2F7  |. 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-4]
      0052B2FA  |. E8 7594EDFF    CALL zhdm.00404774
      0052B2FF  \. C3             RETN
      0052B300   .^E9 B78DEDFF    JMP zhdm.004040BC
      0052B305   .^EB E3          JMP SHORT zhdm.0052B2EA
      0052B307   . 5E             POP ESI
      0052B308   . 5B             POP EBX
      0052B309   . 8BE5           MOV ESP,EBP
      0052B30B   . 5D             POP EBP
      0052B30C   . C3             RETN                               
    }*********************CALL zhdm.0052b230
0052D16C  |. 8B85 58FFFFFF  MOV EAX,DWORD PTR SS:[EBP-A8]            ;指向Blue1的地址指標
0052D172  |. E8 0DC4EDFF    CALL zhdm.00409584                       ;將Blue1轉換成16進位制數放入

EAX
0052D177  |. 8D95 5CFFFFFF  LEA EDX,DWORD PTR SS:[EBP-A4]            ;堆疊值中包括訂單號和訂單號

運算儲存的餘數Rushu
0052D17D  |. E8 8EE1FFFF    CALL zhdm.0052B310                       ;Blue1與Rushu運算
    {*********************CALL zhdm.0052B310
      0052B310  /$ 55             PUSH EBP
      0052B311  |. 8BEC           MOV EBP,ESP
      0052B313  |. 33C9           XOR ECX,ECX
      0052B315  |. 51             PUSH ECX
      0052B316  |. 51             PUSH ECX
      0052B317  |. 51             PUSH ECX
      0052B318  |. 51             PUSH ECX
      0052B319  |. 51             PUSH ECX
      0052B31A  |. 51             PUSH ECX
      0052B31B  |. 53             PUSH EBX
      0052B31C  |. 56             PUSH ESI
      0052B31D  |. 8BF2           MOV ESI,EDX
      0052B31F  |. 8BD8           MOV EBX,EAX
      0052B321  |. 33C0           XOR EAX,EAX
      0052B323  |. 55             PUSH EBP
      0052B324  |. 68 5CB45200    PUSH zhdm.0052B45C
      0052B329  |. 64:FF30        PUSH DWORD PTR FS:[EAX]
      0052B32C  |. 64:8920        MOV DWORD PTR FS:[EAX],ESP
      0052B32F  |. 81F3 8776FBDD  XOR EBX,DDFB7687                         

;Blue1^0xDDFB7687=Blue2
      0052B335  |. 8BC3           MOV EAX,EBX
      0052B337  |. 33D2           XOR EDX,EDX
      0052B339  |. 52             PUSH EDX                                 ; /Arg2 => 00000000
      0052B33A  |. 50             PUSH EAX                                 ; |Arg1
      0052B33B  |. 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-4]             ; |
      0052B33E  |. E8 0DE2EDFF    CALL zhdm.00409550                       ; \zhdm.00409550
      0052B343  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]             ;Blue2 的DEC形式
      0052B346  |. 0FB600         MOVZX EAX,BYTE PTR DS:[EAX]              ;Blue2[0]
      0052B349  |. 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]
      0052B34C  |. 0FB652 01      MOVZX EDX,BYTE PTR DS:[EDX+1]            ;Blue2[1]
      0052B350  |. 03C2           ADD EAX,EDX                              ;S1=Blue2[0]+Blue2[1];
      0052B352  |. B9 05000000    MOV ECX,5
      0052B357  |. 99             CDQ
      0052B358  |. F7F9           IDIV ECX
      0052B35A  |. 80C2 66        ADD DL,66                                ;DL=S1%5;S1=DL+0x66;
      0052B35D  |. 8855 F8        MOV BYTE PTR SS:[EBP-8],DL
      0052B360  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
      0052B363  |. 0FB640 02      MOVZX EAX,BYTE PTR DS:[EAX+2]            ;Blue2[2];
      0052B367  |. 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]
      0052B36A  |. 0FB652 03      MOVZX EDX,BYTE PTR DS:[EDX+3]            ;Blue2[3];
      0052B36E  |. 03C2           ADD EAX,EDX                              ;S2=Blue2[2]+Blue2[3];
      0052B370  |. B9 05000000    MOV ECX,5
      0052B375  |. 99             CDQ
      0052B376  |. F7F9           IDIV ECX
      0052B378  |. 80C2 75        ADD DL,75                                ;DL=S2%5;S2=DL+0x75;
      0052B37B  |. 8855 F9        MOV BYTE PTR SS:[EBP-7],DL
      0052B37E  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
      0052B381  |. 0FB640 04      MOVZX EAX,BYTE PTR DS:[EAX+4]            ;Blue2[4]
      0052B385  |. 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]
      0052B388  |. 0FB652 05      MOVZX EDX,BYTE PTR DS:[EDX+5]            ;Blue2[5]
      0052B38C  |. 03C2           ADD EAX,EDX                              ;S3=Blue2[4]+Blue2[5];
      0052B38E  |. B9 05000000    MOV ECX,5
      0052B393  |. 99             CDQ
      0052B394  |. F7F9           IDIV ECX
      0052B396  |. 80C2 7A        ADD DL,7A                                ;DL=S3%5;S3=DL+0x7A
      0052B399  |. 8855 FA        MOV BYTE PTR SS:[EBP-6],DL
      0052B39C  |. 8B45 FC        MOV EAX,DWORD PTR SS:[EBP-4]
      0052B39F  |. 0FB640 06      MOVZX EAX,BYTE PTR DS:[EAX+6]            ;Blue2[6];
      0052B3A3  |. 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]
      0052B3A6  |. 0FB652 07      MOVZX EDX,BYTE PTR DS:[EDX+7]            ;Blue2[7]
      0052B3AA  |. 03C2           ADD EAX,EDX                              ;S4=Blue2[6]+BLue2[7];
      0052B3AC  |. 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]
      0052B3AF  |. 0FB652 08      MOVZX EDX,BYTE PTR DS:[EDX+8]            ;Blue2[8];
      0052B3B3  |. 03C2           ADD EAX,EDX                              

S4=Blue2[6]+BLue2[7]+Blue2[8];
      0052B3B5  |. B9 05000000    MOV ECX,5
      0052B3BA  |. 99             CDQ
      0052B3BB  |. F7F9           IDIV ECX
      0052B3BD  |. 80C2 69        ADD DL,69                               ;DL=S4%5;S4=DL+x69;
      0052B3C0  |. 8855 FB        MOV BYTE PTR SS:[EBP-5],DL
      0052B3C3  |. 8D45 F4        LEA EAX,DWORD PTR SS:[EBP-C]
      0052B3C6  |. 8A55 F8        MOV DL,BYTE PTR SS:[EBP-8]              ;DL=S1;
      0052B3C9  |. E8 8695EDFF    CALL zhdm.00404954                      ;
      0052B3CE  |. 8B45 F4        MOV EAX,DWORD PTR SS:[EBP-C]
      0052B3D1  |. 8D55 FC        LEA EDX,DWORD PTR SS:[EBP-4]
      0052B3D4  |. B9 07000000    MOV ECX,7                               
      0052B3D9  |. E8 2E99EDFF    CALL zhdm.00404D0C                      ;DL值加入Blue2串的第7個

位置(從1開始)形成新串值Blue2
      0052B3DE  |. 8D45 F0        LEA EAX,DWORD PTR SS:[EBP-10]
      0052B3E1  |. 8A55 FB        MOV DL,BYTE PTR SS:[EBP-5]              ;DL=S4;
      0052B3E4  |. E8 6B95EDFF    CALL zhdm.00404954
      0052B3E9  |. 8B45 F0        MOV EAX,DWORD PTR SS:[EBP-10]
      0052B3EC  |. 8D55 FC        LEA EDX,DWORD PTR SS:[EBP-4]
      0052B3EF  |. B9 03000000    MOV ECX,3
      0052B3F4  |. E8 1399EDFF    CALL zhdm.00404D0C                      ;DL值加入Blue2串的第3個

位置(從1開始)形成新串值Blue2
      0052B3F9  |. 8D45 EC        LEA EAX,DWORD PTR SS:[EBP-14]
      0052B3FC  |. 8A55 F9        MOV DL,BYTE PTR SS:[EBP-7]              ;DL=S2;
      0052B3FF  |. E8 5095EDFF    CALL zhdm.00404954
      0052B404  |. 8B45 EC        MOV EAX,DWORD PTR SS:[EBP-14]
      0052B407  |. 8D55 FC        LEA EDX,DWORD PTR SS:[EBP-4]
      0052B40A  |. B9 05000000    MOV ECX,5
      0052B40F  |. E8 F898EDFF    CALL zhdm.00404D0C                      ;DL值加入Blue2串的第5個

位置(從1開始)形成新串值Blue2
      0052B414  |. 8D45 E8        LEA EAX,DWORD PTR SS:[EBP-18]
      0052B417  |. 8A55 FA        MOV DL,BYTE PTR SS:[EBP-6]              ;DL=S3
      0052B41A  |. E8 3595EDFF    CALL zhdm.00404954
      0052B41F  |. 8B45 E8        MOV EAX,DWORD PTR SS:[EBP-18]
      0052B422  |. 8D55 FC        LEA EDX,DWORD PTR SS:[EBP-4]
      0052B425  |. B9 09000000    MOV ECX,9
      0052B42A  |. E8 DD98EDFF    CALL zhdm.00404D0C                      ;DL值加入Blue2串的第9個

位置(從1開始)形成新串值Blue2
      0052B42F  |. 8BC6           MOV EAX,ESI
      0052B431  |. 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]            ;最後生成的Blue2串放入

EDX
      0052B434  |. E8 8F93EDFF    CALL zhdm.004047C8
      0052B439  |. 33C0           XOR EAX,EAX
      0052B43B  |. 5A             POP EDX
      0052B43C  |. 59             POP ECX
      0052B43D  |. 59             POP ECX
      0052B43E  |. 64:8910        MOV DWORD PTR FS:[EAX],EDX
      0052B441  |. 68 63B45200    PUSH zhdm.0052B463
      0052B446  |> 8D45 E8        LEA EAX,DWORD PTR SS:[EBP-18]
      0052B449  |. BA 04000000    MOV EDX,4
      0052B44E  |. E8 4593EDFF    CALL zhdm.00404798
      0052B453  |. 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-4]
      0052B456  |. E8 1993EDFF    CALL zhdm.00404774
      0052B45B  \. C3             RETN
      0052B45C   .^E9 5B8CEDFF    JMP zhdm.004040BC
      0052B461   .^EB E3          JMP SHORT zhdm.0052B446
      0052B463   . 5E             POP ESI
      0052B464   . 5B             POP EBX
      0052B465   . 8BE5           MOV ESP,EBP
      0052B467   . 5D             POP EBP
      0052B468   . C3             RETN
    }*********************CALL zhdm.0052B310
0052D182  |. FFB5 5CFFFFFF  PUSH DWORD PTR SS:[EBP-A4]
0052D188  |. 68 10D35200    PUSH zhdm.0052D310
0052D18D  |. 8D85 68FFFFFF  LEA EAX,DWORD PTR SS:[EBP-98]
0052D193  |. BA 03000000    MOV EDX,3
0052D198  |. E8 4F79EDFF    CALL zhdm.00404AEC                       ;生成正解的註冊碼
    {*********************CALL zhdm.00404AEC
     00404AEC   $ 53             PUSH EBX
     00404AED   . 56             PUSH ESI
     00404AEE   . 57             PUSH EDI
     00404AEF   . 52             PUSH EDX
     00404AF0   . 50             PUSH EAX
     00404AF1   . 89D3           MOV EBX,EDX
     00404AF3   . 31FF           XOR EDI,EDI
     00404AF5   . 8B4C94 14      MOV ECX,DWORD PTR SS:[ESP+EDX*4+14]    ;Yushu 
     00404AF9   . 85C9           TEST ECX,ECX
     00404AFB   . 74 06          JE SHORT zhdm.00404B03
     00404AFD   . 3908           CMP DWORD PTR DS:[EAX],ECX
     00404AFF   . 75 02          JNZ SHORT zhdm.00404B03
     00404B01   . 89C7           MOV EDI,EAX
     00404B03   > 31C0           XOR EAX,EAX
     00404B05   > 8B4C94 14      MOV ECX,DWORD PTR SS:[ESP+EDX*4+14]    ;Blue2 
     00404B09   . 85C9           TEST ECX,ECX
     00404B0B   . 74 09          JE SHORT zhdm.00404B16
     00404B0D   . 0341 FC        ADD EAX,DWORD PTR DS:[ECX-4]           ;EAX存放Yushu十進位制串長度

,[ECX-4]存放Blue2串長度
     00404B10   . 39CF           CMP EDI,ECX
     00404B12   . 75 02          JNZ SHORT zhdm.00404B16
     00404B14   . 31FF           XOR EDI,EDI
     00404B16   > 4A             DEC EDX
     00404B17   .^75 EC          JNZ SHORT zhdm.00404B05
     00404B19   . 85FF           TEST EDI,EDI
     00404B1B   . 74 14          JE SHORT zhdm.00404B31
     00404B1D   . 89C2           MOV EDX,EAX
     00404B1F   . 89F8           MOV EAX,EDI
     00404B21   . 8B37           MOV ESI,DWORD PTR DS:[EDI]
     00404B23   . 8B76 FC        MOV ESI,DWORD PTR DS:[ESI-4]
     00404B26   . E8 85020000    CALL zhdm.00404DB0
     00404B2B   . 57             PUSH EDI
     00404B2C   . 0337           ADD ESI,DWORD PTR DS:[EDI]
     00404B2E   . 4B             DEC EBX
     00404B2F   . EB 08          JMP SHORT zhdm.00404B39
     00404B31   > E8 02FDFFFF    CALL zhdm.00404838
     00404B36   . 50             PUSH EAX
     00404B37   . 89C6           MOV ESI,EAX
     00404B39   > 8B449C 18      MOV EAX,DWORD PTR SS:[ESP+EBX*4+18]   ;依次取Yush和Blue2十進位制串
     00404B3D   . 89F2           MOV EDX,ESI
     00404B3F   . 85C0           TEST EAX,EAX
     00404B41   . 74 0A          JE SHORT zhdm.00404B4D
     00404B43   . 8B48 FC        MOV ECX,DWORD PTR DS:[EAX-4]          ;Yush和Blue2串長度
     00404B46   . 01CE           ADD ESI,ECX
     00404B48   . E8 C7DEFFFF    CALL zhdm.00402A14                    ;串聯接後尾部插入字'^'
     00404B4D   > 4B             DEC EBX
     00404B4E   .^75 E9          JNZ SHORT zhdm.00404B39
     00404B50   . 5A             POP EDX
     00404B51   . 58             POP EAX
     00404B52   . 85FF           TEST EDI,EDI
     00404B54   . 75 0C          JNZ SHORT zhdm.00404B62
     00404B56   . 85D2           TEST EDX,EDX
     00404B58   . 74 03          JE SHORT zhdm.00404B5D
     00404B5A   . FF4A F8        DEC DWORD PTR DS:[EDX-8]
     00404B5D   > E8 66FCFFFF    CALL zhdm.004047C8
     00404B62   > 5A             POP EDX
     00404B63   . 5F             POP EDI
     00404B64   . 5E             POP ESI
     00404B65   . 5B             POP EBX
     00404B66   . 58             POP EAX
     00404B67   . 8D2494         LEA ESP,DWORD PTR SS:[ESP+EDX*4]
     00404B6A   . FFE0           JMP EAX
     00404B6C   . C3             RETN
    }*********************CALL zhdm.00404AEC
0052D19D  |. 8B95 68FFFFFF  MOV EDX,DWORD PTR SS:[EBP-98]            ;正確的註冊碼,這裡可以作記憶體

序號產生器
0052D1A3  |. 58             POP EAX                                  ;輸入的試煉碼
0052D1A4  |. E8 C779EDFF    CALL zhdm.00404B70                       ;正確的註冊碼與試煉碼的比較
0052D1A9  |. 0F85 95000000  JNZ zhdm.0052D244                        ;不相等跳到出錯資訊,這裡可以

爆破

演算法描述
1.設ddh為輸入的訂單號
2.yushu=ddh%0x315;
3.blue=ddh^0xB25F1;轉換成串
4.blue=blue+[(blue[0]+blue[1])%5+0x34]+[(blue[2]+blue[3])%5+0x33];轉換成整數
5.blue1=blue^DDFB7687;
6.s1=(blue1[0]+blue1[1])%5+0x66;
  s2=(blue1[2]+blue1[3])%5+0x75;
  s3=(blue1[4]+blue1[5])%5+0x7a;
  s4=(blue1[6]+blue1[7]+blue1[8])%5+0x69;
7.blue1轉換成串;
  串blue1的第7個位置插入S1(從1開始)生成新串blue1;
  串blue1的第3個位置插入S4(從1開始)生成新串blue1;
  串blue1的第5個位置插入S2(從1開始)生成新串blue1;
  串blue1的第9個位置插入S3(從1開始)生成新串blue1;
8.yushu轉換成串
  設註冊碼為zcm
  zcm=yush+blue1+'^'

由於版權問題我就不附序號產生器了,序號產生器源程式也就不附了,有興趣的可以編寫一下.
不過我還是給出一個註冊號:
訂單號:12345678
註冊碼:19525l9u087{i883

不過該軟體註冊成功後,如果訂單號短的話,就會重啟後顯示沒有註冊,最好是8位的訂單號
註冊完成的資訊可能存放在了c:\\winnt\\system32\\coin_o_38.dll檔案裡。
注:該註冊的訂單號必須大於1700000,否則註冊不成功顯然當時顯示註冊成功了!具體見下:
在程式關閉時呼叫:
0052CFC3  |. 3D A0F01900    CMP EAX,19F0A0                           ;eax 為訂單號值與0x19F0A0=1700000比較
0052CFC8  |. 7F 1E          JG SHORT zhdm.0052CFE8
0052CFCA  |> 8D85 64FFFFFF  LEA EAX,DWORD PTR SS:[EBP-9C]
0052CFD0  |. B9 24D05200    MOV ECX,zhdm.0052D024                    ;  ASCII "\CoIn_o_38.dll"
0052CFD5  |. 8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4]
0052CFD8  |. E8 9B7AEDFF    CALL zhdm.00404A78
0052CFDD  |. 8B85 64FFFFFF  MOV EAX,DWORD PTR SS:[EBP-9C]
0052CFE3  |. E8 0CC8EDFF    CALL zhdm.004097F4                       ;  呼叫刪除\CoIn_o_38.dll
0052CFE8  |> 33C0           XOR EAX,EAX
0052CFEA  |. 5A             POP EDX
0052CFEB  |. 59             POP ECX
0052CFEC  |. 59             POP ECX
0052CFED  |. 64:8910        MOV DWORD PTR FS:[EAX],EDX
0052CFF0  |. 68 15D05200    PUSH zhdm.0052D015
0052CFF5  |> 8D85 64FFFFFF  LEA EAX,DWORD PTR SS:[EBP-9C]
0052CFFB  |. BA 05000000    MOV EDX,5
0052D000  |. E8 9377EDFF    CALL zhdm.00404798
0052D005  |. 8D45 FC        LEA EAX,DWORD PTR SS:[EBP-4]
0052D008  |. E8 6777EDFF    CALL zhdm.00404774
0052D00D  \. C3             RETN

004097F4  /$ 53             PUSH EBX
004097F5  |. 8BD8           MOV EBX,EAX
004097F7  |. 8BC3           MOV EAX,EBX
004097F9  |. E8 26B4FFFF    CALL zhdm.00404C24
004097FE  |. 50             PUSH EAX                                 ; /FileName
004097FF  |. E8 28D9FFFF    CALL <JMP.&kernel32.DeleteFileA>         ; \DeleteFileA
00409804  |. 83F8 01        CMP EAX,1
00409807  |. 1BC0           SBB EAX,EAX
00409809  |. 40             INC EAX
0040980A  |. 5B             POP EBX
0040980B  \. C3             RETN

--------------------------------------------------------------------------------
【破解總結】
    該程式不好下斷點,且由於DEDE我不太會用,沒有在DEDE的編譯資訊中找到有用的資訊,因此用OLLYDBG來跟

蹤,Dephi的程式的確是有點麻煩,可能是我對Dephi程式設計不懂的原因吧!看來以後還得玩玩Dephi程式設計.
--------------------------------------------------------------------------------
【版權宣告】 本文純屬技術交流, 轉載請註明作者並保持文章的完整, 謝謝!

相關文章