论坛: 编程破解 标题: [转帖]菜鸟算法练习破文三 复制本贴地址    
作者: yongmin [yongmin]    论坛用户   登录
作者:maomaoma
【破文标题】菜鸟maomaoma的算法练习破文三
【破文作者】maomaoma
【作者邮箱】
【作者主页】无
【破解工具】OD、PEiD
【破解平台】winxp
【软件名称】Magic DVD Ripper 4.3
【软件大小】2075KB

【原版下载】http://86516.onlinedown.net/soft/24198.htm
【保护方式】无
【软件简介】Magic DVD Ripper 是一款DVD 电影抓取工具,支持 DVD to VCD,DVD to SVCD 转换,抓取后的DVD已经去除了区位码保护和MacroVision 保护,支持抓取或者转换完成后自动关机的功能,完整的支持市面上各种流行的DVD和VCD刻录机和盘片!
【破解声明】我是菜鸟,学写破文,还请大侠多多指教:)
------------------------------------------------------------------------
【破解过程】

1、PEiD查主程序无壳,Borland C++ 1999编译
2、OD载入,根据注册错误提示字符串“register code is not correct!\n\nplease copy and paste your user name and register code.”(该字符串出现次数多,我是分别试验过去,笨办法:),可用dede反编译,再下断)下断点
3、F9运行,输入用户名:maomaoma,注册码:1234567801234567891(注:注册码位数通过后面分析得知),OD断下
4、具体分析过程及代码注释如下:

004182E0  .  55            push    ebp                              ;  OD断在此处
004182E1  .  8BEC          mov    ebp, esp
004182E3  .  83C4 AC      add    esp, -54
004182E6  .  53            push    ebx
004182E7  .  56            push    esi
004182E8  .  57            push    edi
004182E9  .  8945 B8      mov    [ebp-48], eax
004182EC  .  B8 782A5000  mov    eax, 00502A78
004182F1  .  E8 AEE40B00  call    004D67A4
004182F6  .  66:C745 CC 08>mov    word ptr [ebp-34], 8
004182FC  .  66:C745 CC 08>mov    word ptr [ebp-34], 8
00418302  .  66:C745 CC 20>mov    word ptr [ebp-34], 20
00418308  .  33C0          xor    eax, eax
0041830A  .  33F6          xor    esi, esi
0041830C  .  8945 F4      mov    [ebp-C], eax
0041830F  .  8D55 F4      lea    edx, [ebp-C]
00418312  .  FF45 D8      inc    dword ptr [ebp-28]
00418315  .  8B4D B8      mov    ecx, [ebp-48]
00418318  .  8B81 F8020000 mov    eax, [ecx+2F8]
0041831E  .  E8 8DFD0800  call    004A80B0                        ;  取用户名
00418323  .  8D45 F4      lea    eax, [ebp-C]
00418326  .  8B00          mov    eax, [eax]
00418328  .  33D2          xor    edx, edx
0041832A  .  8955 FC      mov    [ebp-4], edx
0041832D  .  8D55 FC      lea    edx, [ebp-4]
00418330  .  FF45 D8      inc    dword ptr [ebp-28]
00418333  .  E8 DC2E0300  call    0044B214                        ;  用户名入堆栈
00418338  .  FF4D D8      dec    dword ptr [ebp-28]
0041833B  .  8D45 F4      lea    eax, [ebp-C]
0041833E  .  BA 02000000  mov    edx, 2
00418343  .  E8 E0B20C00  call    004E3628
00418348  .  66:C745 CC 14>mov    word ptr [ebp-34], 14
0041834E  .  837D FC 00    cmp    dword ptr [ebp-4], 0
00418352  .  74 05        je      short 00418359
00418354  .  8B45 FC      mov    eax, [ebp-4]
00418357  .  EB 05        jmp    short 0041835E
00418359  >  B8 ED285000  mov    eax, 005028ED
0041835E  >  8945 B4      mov    [ebp-4C], eax
00418361  .  33FF          xor    edi, edi
00418363  .  8B45 B4      mov    eax, [ebp-4C]
00418366  .  8BD8          mov    ebx, eax
00418368  .  EB 08        jmp    short 00418372
0041836A  >  33C0          xor    eax, eax
0041836C  .  8A03          mov    al, [ebx]
0041836E  .  03F0          add    esi, eax                        ;  esi等于用户名各字符ASCII值相加(我这里为348)
00418370  .  47            inc    edi
00418371  .  43            inc    ebx
00418372  >  8B55 B4      mov    edx, [ebp-4C]
00418375  .  52            push    edx
00418376  .  E8 8DE10B00  call    004D6508
0041837B  .  59            pop    ecx
0041837C  .  3BF8          cmp    edi, eax
0041837E  .^ 72 EA        jb      short 0041836A
00418380  .  81E6 FFFF0080 and    esi, 8000FFFF
00418386  .  79 08        jns    short 00418390
00418388  .  4E            dec    esi
00418389  .  81CE 0000FFFF or      esi, FFFF0000
0041838F  .  46            inc    esi
00418390  >  56            push    esi                              ; /Arg3
00418391  .  68 EE285000  push    005028EE                        ; |%04x
00418396  .  8D4D AC      lea    ecx, [ebp-54]                    ; |
00418399  .  51            push    ecx                              ; |Arg1
0041839A  .  E8 B1090C00  call    004D8D50                        ; \格式化esi(我这里348扩展为0348)记着A
0041839F  .  66:C745 CC 2C>mov    word ptr [ebp-34], 2C
004183A5  .  33C0          xor    eax, eax
004183A7  .  83C4 0C      add    esp, 0C
004183AA  .  8945 F0      mov    [ebp-10], eax
004183AD  .  8D55 F0      lea    edx, [ebp-10]
004183B0  .  FF45 D8      inc    dword ptr [ebp-28]
004183B3  .  8B4D B8      mov    ecx, [ebp-48]
004183B6  .  8B81 FC020000 mov    eax, [ecx+2FC]
004183BC  .  E8 EFFC0800  call    004A80B0                        ;  取假码
004183C1  .  8D45 F0      lea    eax, [ebp-10]
004183C4  .  8B00          mov    eax, [eax]
004183C6  .  33D2          xor    edx, edx
004183C8  .  8955 EC      mov    [ebp-14], edx
004183CB  .  8D55 EC      lea    edx, [ebp-14]
004183CE  .  FF45 D8      inc    dword ptr [ebp-28]
004183D1  .  E8 3E2E0300  call    0044B214                        ;  假码入堆栈
004183D6  .  8D45 EC      lea    eax, [ebp-14]
004183D9  .  33C9          xor    ecx, ecx
004183DB  .  894D F8      mov    [ebp-8], ecx
004183DE  .  8D55 F8      lea    edx, [ebp-8]
004183E1  .  FF45 D8      inc    dword ptr [ebp-28]
004183E4  .  E8 8BB40C00  call    004E3874
004183E9  .  FF4D D8      dec    dword ptr [ebp-28]
004183EC  .  8D45 EC      lea    eax, [ebp-14]
004183EF  .  BA 02000000  mov    edx, 2
004183F4  .  E8 2FB20C00  call    004E3628
004183F9  .  FF4D D8      dec    dword ptr [ebp-28]
004183FC  .  8D45 F0      lea    eax, [ebp-10]
004183FF  .  BA 02000000  mov    edx, 2
00418404  .  E8 1FB20C00  call    004E3628
00418409  .  66:C745 CC 14>mov    word ptr [ebp-34], 14
0041840F  .  837D F8 00    cmp    dword ptr [ebp-8], 0
00418413  .  74 05        je      short 0041841A
00418415  .  8B75 F8      mov    esi, [ebp-8]
00418418  .  EB 05        jmp    short 0041841F
0041841A  >  BE F3285000  mov    esi, 005028F3
0041841F  >  33FF          xor    edi, edi
00418421  .  8BDE          mov    ebx, esi
00418423  .  EB 12        jmp    short 00418437
00418425  >  0FBE03        movsx  eax, byte ptr [ebx]
00418428  .  83F8 6F      cmp    eax, 6F                          ;  跟o比较,防止0与o不分
0041842B  .  74 05        je      short 00418432
0041842D  .  83F8 4F      cmp    eax, 4F                          ;  跟O比较,防止0与O不分
00418430  .  75 03        jnz    short 00418435
00418432  >  C603 30      mov    byte ptr [ebx], 30
00418435  >  47            inc    edi
00418436  .  43            inc    ebx
00418437  >  56            push    esi
00418438  .  E8 CBE00B00  call    004D6508
0041843D  .  59            pop    ecx
0041843E  .  3BF8          cmp    edi, eax
00418440  .^ 72 E3        jb      short 00418425
00418442  .  66:C745 CC 38>mov    word ptr [ebp-34], 38
00418448  .  8D45 E8      lea    eax, [ebp-18]
0041844B  .  8BD6          mov    edx, esi
0041844D  .  E8 C2B00C00  call    004E3514
00418452  .  FF45 D8      inc    dword ptr [ebp-28]
00418455  .  8B10          mov    edx, [eax]
00418457  .  8B45 B8      mov    eax, [ebp-48]
0041845A  .  8B80 FC020000 mov    eax, [eax+2FC]
00418460  .  E8 7BFC0800  call    004A80E0
00418465  .  FF4D D8      dec    dword ptr [ebp-28]
00418468  .  8D45 E8      lea    eax, [ebp-18]
0041846B  .  BA 02000000  mov    edx, 2
00418470  .  E8 B3B10C00  call    004E3628
00418475  .  8A4E 05      mov    cl, [esi+5]                      ;  假码第六位赋给cl
00418478  .  3A4D AC      cmp    cl, [ebp-54]                    ;  cl跟A第一位比较(我这里是跟0比较)
0041847B  .  75 26        jnz    short 004184A3                  ;  不等则跳
0041847D  .  8A46 04      mov    al, [esi+4]                      ;  假码第五位赋给al
00418480  .  3A45 AD      cmp    al, [ebp-53]                    ;  al跟A第二位比较(我这里是跟3比较)
00418483  .  75 1E        jnz    short 004184A3                  ;  不等则跳
00418485  .  8A56 12      mov    dl, [esi+12]                    ;  假码第十九位赋给dl
00418488  .  3A55 AE      cmp    dl, [ebp-52]                    ;  dl跟A第三位比较(我这里是跟4比较)
0041848B  .  75 16        jnz    short 004184A3                  ;  不等则跳
0041848D  .  8A0E          mov    cl, [esi]                        ;  假码第一位赋给cl
0041848F  .  3A4D AF      cmp    cl, [ebp-51]                    ;  cl跟A第四位比较(我这里是跟8比较)
00418492  .  75 0F        jnz    short 004184A3                  ;  不等则跳
00418494  .  8B45 B8      mov    eax, [ebp-48]
00418497  .  C780 4C020000>mov    dword ptr [eax+24C], 1
004184A1  .  EB 3E        jmp    short 004184E1
004184A3  >  66:C745 CC 44>mov    word ptr [ebp-34], 44
004184A9  .  BA F4285000  mov    edx, 005028F4                    ;  register code is not correct!\n\nplease copy and paste your user name and register code.
004184AE  .  8D45 E4      lea    eax, [ebp-1C]
004184B1  .  E8 5EB00C00  call    004E3514
004184B6  .  FF45 D8      inc    dword ptr [ebp-28]
004184B9  .  8B00          mov    eax, [eax]
004184BB  .  E8 34A10800  call    004A25F4
004184C0  .  FF4D D8      dec    dword ptr [ebp-28]
004184C3  .  8D45 E4      lea    eax, [ebp-1C]
004184C6  .  BA 02000000  mov    edx, 2
004184CB  .  E8 58B10C00  call    004E3628
004184D0  .  8B4D B8      mov    ecx, [ebp-48]
004184D3  .  8B81 FC020000 mov    eax, [ecx+2FC]
004184D9  .  8B10          mov    edx, [eax]
004184DB  .  FF92 C0000000 call    [edx+C0]
004184E1  >  FF4D D8      dec    dword ptr [ebp-28]
004184E4  .  8D45 F8      lea    eax, [ebp-8]
004184E7  .  BA 02000000  mov    edx, 2
004184EC  .  E8 37B10C00  call    004E3628
004184F1  .  FF4D D8      dec    dword ptr [ebp-28]
004184F4  .  8D45 FC      lea    eax, [ebp-4]
004184F7  .  BA 02000000  mov    edx, 2
004184FC  .  E8 27B10C00  call    004E3628
00418501  .  66:C745 CC 08>mov    word ptr [ebp-34], 8
00418507  .  66:C745 CC 00>mov    word ptr [ebp-34], 0
0041850D  .  EB 49        jmp    short 00418558
0041850F  .  66:C745 CC 50>mov    word ptr [ebp-34], 50
00418515  .  BA 4B295000  mov    edx, 0050294B                    ;  register code is not correct!\n\nplease copy and paste your user name and register code.
0041851A  .  8D45 E0      lea    eax, [ebp-20]
0041851D  .  E8 F2AF0C00  call    004E3514
00418522  .  FF45 D8      inc    dword ptr [ebp-28]
00418525  .  8B00          mov    eax, [eax]
00418527  .  E8 C8A00800  call    004A25F4
0041852C  .  FF4D D8      dec    dword ptr [ebp-28]
0041852F  .  8D45 E0      lea    eax, [ebp-20]
00418532  .  BA 02000000  mov    edx, 2
00418537  .  E8 ECB00C00  call    004E3628
0041853C  .  8B4D B8      mov    ecx, [ebp-48]
0041853F  .  8B81 FC020000 mov    eax, [ecx+2FC]
00418545  .  8B10          mov    edx, [eax]
00418547  .  FF92 C0000000 call    [edx+C0]
0041854D  .  66:C745 CC 10>mov    word ptr [ebp-34], 10
00418553  .  E8 16800C00  call    004E056E
00418558  >  8B4D BC      mov    ecx, [ebp-44]
0041855B  .  64:890D 00000>mov    fs:[0], ecx
00418562  .  5F            pop    edi
00418563  .  5E            pop    esi
00418564  .  5B            pop    ebx
00418565  .  8BE5          mov    esp, ebp
00418567  .  5D            pop    ebp
00418568  .  C3            retn


------------------------------------------------------------------------
【破解总结】

1、注册码跟用户名有关
2、取用户名各字符ASCII值相加,结果格式化(%04x),记着A
3、注册码第一、第五、第六、第十九位分别与A的第四、第二、第一、第三位比较,相等则注册成功,其余各位任意
4、注册信息保存于MagicDVDRipper.ini
------------------------------------------------------------------------
【版权声明】本文系作者原创, 转载请注明作者并保持文章的完整, 谢谢!

地主 发表时间: 06-12-14 11:09

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号