• 标 题:回溯设断法破解中华灯谜V2004 build 02.01
  • 作 者:blue_devil_bomb
  • 时 间:004-06-15,18:56
  • 链 接:http://bbs.pediy.com

【破解作者】 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编程.
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!