ZHOU2X 发表于 2007-4-23 14:02:07

CD DVD Data Recovery v1.0.810 注册分析

【破文标题】CD DVD Data Recovery v1.0.810 注册分析
【破文作者】ZHOU2X
【破解工具】OD PEID
【破解平台】Win XP
【软件名称】CD/DVD Data Recovery
【软件大小】476 KB
【原版下载】http://www.008soft.com/products/cddvddr.exe
【保护方式】注册码
【软件简介】
CD DVD Data Recovery v1.0.810
软件大小476 KB
软件类别国外软件/光碟工具
运行环境Win2003, WinXp, Win2000, Nt, WinMe, Win9x
软件语言英文
整理时间2006-8-3 9:48:22
相关连接http://www.crsky.com/soft/6844.html
    随着刻录机的普及,刻录盘被广泛的用于数据及资料的备份。但是,由于各种原因,你所备份的数据可能已经无法
在光盘驱动器中被正常读取。现在好了,你有了一个好帮手——CD/DVD Data recovery。它是一个光盘数据、多媒体恢
复工具,适用于从各类无法正常读取的 CD、DVD 中恢复数据。该软件操作非常简便,极易上手。

【破解声明】
------------------------------------------------------------------------
【破解过程】
PEID 扫描为 Microsoft Visual C++ 7.0,无壳;注册失败提示:“registration failed!”

0041A980/.55            push    ebp
0041A981|.8BEC          mov   ebp, esp
0041A983|.83EC 20       sub   esp, 20
0041A986|.894D E0       mov   dword ptr , ecx
0041A989|.6A 01         push    1
0041A98B|.8B4D E0       mov   ecx, dword ptr
0041A98E|.E8 F3D30100   call    00437D86
0041A993|.8B4D E0       mov   ecx, dword ptr
0041A996|.83C1 70       add   ecx, 70
0041A999|.E8 F210FFFF   call    0040BA90
0041A99E|.83F8 02       cmp   eax, 2
0041A9A1|.7D 13         jge   short 0041A9B6            ;注册名不少于2位跳
0041A9A3|.6A 00         push    0
0041A9A5|.6A 00         push    0
0041A9A7|.68 F8E34400   push    0044E3F8                  ;please input correct user name!
0041A9AC|.E8 58710200   call    00441B09
0041A9B1|.E9 A9020000   jmp   0041AC5F
0041A9B6|>8B4D E0       mov   ecx, dword ptr
0041A9B9|.83C1 74       add   ecx, 74
0041A9BC|.E8 CF10FFFF   call    0040BA90
0041A9C1|.83F8 08       cmp   eax, 8
0041A9C4|.7D 13         jge   short 0041A9D9            ;注册码不少于8位跳
0041A9C6|.6A 00         push    0
0041A9C8|.6A 00         push    0
0041A9CA|.68 18E44400   push    0044E418                  ;please input correct registration code!
0041A9CF|.E8 35710200   call    00441B09
0041A9D4|.E9 86020000   jmp   0041AC5F
0041A9D9|>6A 00         push    0                         ; /Arg1 = 00000000
0041A9DB|.8B4D E0       mov   ecx, dword ptr    ; |
0041A9DE|.83C1 70       add   ecx, 70                   ; |
0041A9E1|.E8 0ACEFFFF   call    004177F0                  ; \CDDVDDR.004177F0
0041A9E6|.8845 EF       mov   byte ptr , al
0041A9E9|.6A 01         push    1                         ; /Arg1 = 00000001
0041A9EB|.8B4D E0       mov   ecx, dword ptr    ; |
0041A9EE|.83C1 70       add   ecx, 70                   ; |
0041A9F1|.E8 FACDFFFF   call    004177F0                  ; \CDDVDDR.004177F0
0041A9F6|.8845 F8       mov   byte ptr , al
0041A9F9|.6A 00         push    0                         ; /Arg1 = 00000000
0041A9FB|.8B4D E0       mov   ecx, dword ptr    ; |
0041A9FE|.83C1 70       add   ecx, 70                   ; |
0041AA01|.E8 EACDFFFF   call    004177F0                  ; \CDDVDDR.004177F0
0041AA06|.8845 FF       mov   byte ptr , al
0041AA09|.6A 01         push    1                         ; /Arg1 = 00000001
0041AA0B|.8B4D E0       mov   ecx, dword ptr    ; |
0041AA0E|.83C1 70       add   ecx, 70                   ; |
0041AA11|.E8 DACDFFFF   call    004177F0                  ; \CDDVDDR.004177F0
0041AA16|.8845 FA       mov   byte ptr , al
0041AA19|.0FB645 EF   movzx   eax, byte ptr     ;注册名 ASCII 第一位
0041AA1D|.83C8 43       or      eax, 43                   ;与 43 或运算,取为S1
0041AA20|.8845 EF       mov   byte ptr , al
0041AA23|.0FB64D F8   movzx   ecx, byte ptr    ;注册名 ASCII 第二位
0041AA27|.83C9 44       or      ecx, 44                   ;与 44 或运算,取为S2
0041AA2A|.884D F8       mov   byte ptr , cl
0041AA2D|.0FB655 FF   movzx   edx, byte ptr    ;注册名 ASCII 第一位
0041AA31|.83CA 52       or      edx, 52                   ;与 52 或运算,取为S3
0041AA34|.8855 FF       mov   byte ptr , dl
0041AA37|.0FB645 FA   movzx   eax, byte ptr    ;注册名 ASCII 第二位
0041AA3B|.83C8 45       or      eax, 45                   ;与 45 或运算,取为S4
0041AA3E|.8845 FA       mov   byte ptr , al
0041AA41|.0FB645 EF   movzx   eax, byte ptr
0041AA45|.99            cdq
0041AA46|.B9 0A000000   mov   ecx, 0A                   ;S1 除以 0A,求余(S1=S1%0A)
0041AA4B|.F7F9          idiv    ecx
0041AA4D|.8855 EF       mov   byte ptr , dl
0041AA50|.0FB645 F8   movzx   eax, byte ptr
0041AA54|.99            cdq
0041AA55|.B9 0A000000   mov   ecx, 0A                   ;S2 除以 0A,求余(S2=S2%0A)
0041AA5A|.F7F9          idiv    ecx
0041AA5C|.8855 F8       mov   byte ptr , dl
0041AA5F|.0FB645 FF   movzx   eax, byte ptr
0041AA63|.99            cdq
0041AA64|.B9 0A000000   mov   ecx, 0A                   ;S3 除以 0A,求余(S3=S3%0A)
0041AA69|.F7F9          idiv    ecx
0041AA6B|.8855 FF       mov   byte ptr , dl
0041AA6E|.0FB645 FA   movzx   eax, byte ptr
0041AA72|.99            cdq
0041AA73|.B9 0A000000   mov   ecx, 0A                   ;S4 除以 0A,求余(S4=S4%0A)
0041AA78|.F7F9          idiv    ecx
0041AA7A|.8855 FA       mov   byte ptr , dl
0041AA7D|.C745 F0 00000>mov   dword ptr , 0
0041AA84|.C745 E8 00000>mov   dword ptr , 0
0041AA8B|.EB 09         jmp   short 0041AA96
0041AA8D|>8B55 E8       /mov   edx, dword ptr
0041AA90|.83C2 01       |add   edx, 1
0041AA93|.8955 E8       |mov   dword ptr , edx
0041AA96|>8B4D E0      mov   ecx, dword ptr
0041AA99|.83C1 70       |add   ecx, 70
0041AA9C|.E8 EF0FFFFF   |call    0040BA90
0041AAA1|.3945 E8       |cmp   dword ptr , eax
0041AAA4|.7D 1E         |jge   short 0041AAC4
0041AAA6|.8B45 E8       |mov   eax, dword ptr
0041AAA9|.50            |push    eax                      ; /Arg1
0041AAAA|.8B4D E0       |mov   ecx, dword ptr ; |
0041AAAD|.83C1 70       |add   ecx, 70                  ; |
0041AAB0|.E8 3BCDFFFF   |call    004177F0               ; \CDDVDDR.004177F0
0041AAB5|.8845 E7       |mov   byte ptr , al
0041AAB8|.0FB64D E7   |movzx   ecx, byte ptr
0041AABC|.034D F0       |add   ecx, dword ptr ;该循环是注册名 ASCII 逐位相加求和,取为S5
0041AABF|.894D F0       |mov   dword ptr , ecx
0041AAC2|.^ EB C9         \jmp   short 0041AA8D
0041AAC4|>8B45 F0       mov   eax, dword ptr
0041AAC7|.99            cdq
0041AAC8|.B9 0A000000   mov   ecx, 0A                   ;S5 除以 0A,求余(S5=S5%0A)
0041AACD|.F7F9          idiv    ecx
0041AACF|.8855 F4       mov   byte ptr , dl
0041AAD2|.6A 00         push    0                         ; /Arg1 = 00000000
0041AAD4|.8B4D E0       mov   ecx, dword ptr    ; |
0041AAD7|.83C1 74       add   ecx, 74                   ; |
0041AADA|.E8 11CDFFFF   call    004177F0                  ; \CDDVDDR.004177F0
0041AADF|.8845 FC       mov   byte ptr , al
0041AAE2|.6A 01         push    1                         ; /Arg1 = 00000001
0041AAE4|.8B4D E0       mov   ecx, dword ptr    ; |
0041AAE7|.83C1 74       add   ecx, 74                   ; |
0041AAEA|.E8 01CDFFFF   call    004177F0                  ; \CDDVDDR.004177F0
0041AAEF|.8845 FD       mov   byte ptr , al
0041AAF2|.6A 02         push    2                         ; /Arg1 = 00000002
0041AAF4|.8B4D E0       mov   ecx, dword ptr    ; |
0041AAF7|.83C1 74       add   ecx, 74                   ; |
0041AAFA|.E8 F1CCFFFF   call    004177F0                  ; \CDDVDDR.004177F0
0041AAFF|.8845 F6       mov   byte ptr , al
0041AB02|.6A 03         push    3                         ; /Arg1 = 00000003
0041AB04|.8B4D E0       mov   ecx, dword ptr    ; |
0041AB07|.83C1 74       add   ecx, 74                   ; |
0041AB0A|.E8 E1CCFFFF   call    004177F0                  ; \CDDVDDR.004177F0
0041AB0F|.8845 F5       mov   byte ptr , al
0041AB12|.6A 04         push    4                         ; /Arg1 = 00000004
0041AB14|.8B4D E0       mov   ecx, dword ptr    ; |
0041AB17|.83C1 74       add   ecx, 74                   ; |
0041AB1A|.E8 D1CCFFFF   call    004177F0                  ; \CDDVDDR.004177F0
0041AB1F|.8845 F9       mov   byte ptr , al
0041AB22|.6A 05         push    5                         ; /Arg1 = 00000005
0041AB24|.8B4D E0       mov   ecx, dword ptr    ; |
0041AB27|.83C1 74       add   ecx, 74                   ; |
0041AB2A|.E8 C1CCFFFF   call    004177F0                  ; \CDDVDDR.004177F0
0041AB2F|.8845 F7       mov   byte ptr , al
0041AB32|.6A 06         push    6                         ; /Arg1 = 00000006
0041AB34|.8B4D E0       mov   ecx, dword ptr    ; |
0041AB37|.83C1 74       add   ecx, 74                   ; |
0041AB3A|.E8 B1CCFFFF   call    004177F0                  ; \CDDVDDR.004177F0
0041AB3F|.8845 FE       mov   byte ptr , al
0041AB42|.6A 07         push    7                         ; /Arg1 = 00000007
0041AB44|.8B4D E0       mov   ecx, dword ptr    ; |
0041AB47|.83C1 74       add   ecx, 74                   ; |
0041AB4A|.E8 A1CCFFFF   call    004177F0                  ; \CDDVDDR.004177F0
0041AB4F|.8845 FB       mov   byte ptr , al
0041AB52|.0FB655 EF   movzx   edx, byte ptr     ;S1
0041AB56|.0FB645 FC   movzx   eax, byte ptr    ;试炼码第1位
0041AB5A|.83E8 30       sub   eax, 30                   ;试炼码第1位=试炼码第1位-30
0041AB5D|.3BD0          cmp   edx, eax                  ;S1 与试炼码第1位比较
0041AB5F|.75 3C         jnz   short 0041AB9D            ;不等就跳往进行通用码比较(下同)
0041AB61|.0FB64D F8   movzx   ecx, byte ptr
0041AB65|.0FB655 FD   movzx   edx, byte ptr
0041AB69|.83EA 30       sub   edx, 30
0041AB6C|.3BCA          cmp   ecx, edx
0041AB6E|.75 2D         jnz   short 0041AB9D            ;S2 与试炼码第2位比较
0041AB70|.0FB645 FF   movzx   eax, byte ptr
0041AB74|.0FB64D F6   movzx   ecx, byte ptr
0041AB78|.83E9 30       sub   ecx, 30
0041AB7B|.3BC1          cmp   eax, ecx
0041AB7D|.75 1E         jnz   short 0041AB9D            ;S3 与试炼码第3位比较
0041AB7F|.0FB655 FA   movzx   edx, byte ptr
0041AB83|.0FB645 F5   movzx   eax, byte ptr
0041AB87|.83E8 30       sub   eax, 30
0041AB8A|.3BD0          cmp   edx, eax
0041AB8C|.75 0F         jnz   short 0041AB9D            ;S4 与试炼码第4位比较
0041AB8E|.0FB64D F4   movzx   ecx, byte ptr
0041AB92|.0FB655 F9   movzx   edx, byte ptr
0041AB96|.83EA 30       sub   edx, 30
0041AB99|.3BCA          cmp   ecx, edx
0041AB9B|.74 58         je      short 0041ABF5            ;S5 与试炼码第5位比较,如果相等则注册成功
0041AB9D|>0FB645 FC   movzx   eax, byte ptr    ;试炼码第1位;下面8位数字是通用码
0041ABA1|.83F8 39       cmp   eax, 39                   ;9
0041ABA4|.0F85 A7000000 jnz   0041AC51                  ;不等跳往失败(下同)
0041ABAA|.0FB64D FD   movzx   ecx, byte ptr    ;试炼码第2位
0041ABAE|.83F9 33       cmp   ecx, 33                   ;3
0041ABB1|.0F85 9A000000 jnz   0041AC51
0041ABB7|.0FB655 F6   movzx   edx, byte ptr
0041ABBB|.83FA 30       cmp   edx, 30                   ;0
0041ABBE|.0F85 8D000000 jnz   0041AC51
0041ABC4|.0FB645 F5   movzx   eax, byte ptr
0041ABC8|.83F8 31       cmp   eax, 31                   ;1
0041ABCB|.0F85 80000000 jnz   0041AC51
0041ABD1|.0FB64D F9   movzx   ecx, byte ptr
0041ABD5|.83F9 36       cmp   ecx, 36                   ;6
0041ABD8|.75 77         jnz   short 0041AC51
0041ABDA|.0FB655 F7   movzx   edx, byte ptr
0041ABDE|.83FA 36       cmp   edx, 36                   ;6
0041ABE1|.75 6E         jnz   short 0041AC51
0041ABE3|.0FB645 FE   movzx   eax, byte ptr
0041ABE7|.83F8 36       cmp   eax, 36                   ;6
0041ABEA|.75 65         jnz   short 0041AC51
0041ABEC|.0FB64D FB   movzx   ecx, byte ptr
0041ABF0|.83F9 36       cmp   ecx, 36                   ;6
0041ABF3|.75 5C         jnz   short 0041AC51
0041ABF5|>6A 00         push    0
0041ABF7|.6A 00         push    0
0041ABF9|.68 40E44400   push    0044E440                  ;registration has succeeded!
0041ABFE|.E8 066F0200   call    00441B09
0041AC03|.8B4D E0       mov   ecx, dword ptr
0041AC06|.83C1 70       add   ecx, 70
0041AC09|.E8 8202FFFF   call    0040AE90
0041AC0E|.50            push    eax
0041AC0F|.68 5CE44400   push    0044E45C                  ;username
0041AC14|.68 68E44400   push    0044E468                  ;option
0041AC19|.E8 F2CCFFFF   call    00417910
0041AC1E|.8BC8          mov   ecx, eax                  ; |
0041AC20|.E8 FB6F0200   call    00441C20                  ; \CDDVDDR.00441C20
0041AC25|.8B4D E0       mov   ecx, dword ptr
0041AC28|.83C1 74       add   ecx, 74
0041AC2B|.E8 6002FFFF   call    0040AE90
0041AC30|.50            push    eax
0041AC31|.68 70E44400   push    0044E470                  ;registration_code
0041AC36|.68 84E44400   push    0044E484                  ;option
0041AC3B|.E8 D0CCFFFF   call    00417910
0041AC40|.8BC8          mov   ecx, eax                  ; |
0041AC42|.E8 D96F0200   call    00441C20                  ; \CDDVDDR.00441C20
0041AC47|.8B4D E0       mov   ecx, dword ptr
0041AC4A|.E8 3F160200   call    0043C28E
0041AC4F|.EB 0E         jmp   short 0041AC5F
0041AC51|>6A 00         push    0
0041AC53|.6A 00         push    0
0041AC55|.68 8CE44400   push    0044E48C                  ;registration failed!
0041AC5A|.E8 AA6E0200   call    00441B09
0041AC5F|>8BE5          mov   esp, ebp
0041AC61|.5D            pop   ebp
0041AC62\.C3            retn


------------------------------------------------------------------------
【破解总结】
通用注册码:93016666
注册名必须大于等于2位;
注册码必须大于等于8位;
取注册名的第一与第二位 ASCII 码,第一位、第二位分别与 43 、44 及与 52、45 进行或运算,运算结果除以 0A 求余;
逐位取注册名的ASCII 码求和,再除以 0A 求余;将上面结果连接再加 3 位随机数即成注册码
算法比较简单,适合我等新手练习
附易语言注册机源码

.版本 2

.局部变量 name, 文本型
.局部变量 i, 整数型
.局部变量 lenn, 整数型
.局部变量 code1, 字节型
.局部变量 code4, 整数型
.局部变量 code3, 文本型
.局部变量 code2, 字节型

name = 编辑框1.内容
lenn = 取文本长度 (name)
.判断开始 (lenn < 2)' lenn=0 或 lenm=0
    编辑框3.内容 = “★注册名必须2位以上★”
.默认
    .计次循环首 (lenn, i)
      code1 = 取代码 (name, i)
      code4 = code1 + code4
    .计次循环尾 ()
    code1 = 取代码 (name, 1)
    code2 = 取代码 (name, 2)
    置随机数种子 ()
    code3 = 到文本 (位或 (code1, 67) % 10) + 到文本 (位或 (code2, 68) % 10) + 到文本 (位或 (code1,
82) % 10) + 到文本 (位或 (code2, 69) % 10) + 到文本 (code4 % 10) + 到文本 (取随机数 (100, 999))
    编辑框3.内容 = code3
.判断结束


------------------------------------------------------------------------
【版权声明】

ruyi7952 发表于 2007-4-23 19:13:50

谢谢,这个东西让我迷糊了半天。


真的去了第三课但是没搞到教材很郁闷的!

pw2000 发表于 2007-5-23 14:29:33

向前辈学习。
页: [1]
查看完整版本: CD DVD Data Recovery v1.0.810 注册分析