野猫III 发表于 2006-7-31 15:23:36

Arial CD Ripper V1.4.0 注册算法分析 by KuNgBiM[DFCG]

转自:
http://www.chinaitpower.com/2005Nov/2005-11-17/209077.html

【作  者】:
【时  间】:[2005-11-17 14:22
【作者邮箱】:[email protected]
【软件名称】:Arial CD Ripper V1.4.0
【软件大小】:1898 KB
【软件语言】:英文
【软件类别】:国外软件 / 共享版 / 音频转换
【整理时间】:2005-11-05
【下载地址】:http://www.skycn.com/soft/17166.html
【软件简介】:抓音轨和音频转换工具,能够把CD转换成MP3,WAV,OGG,FLAC,APE等文件格式,你可以在不损失质量的前提下只转换一条音轨或者转换整个光盘,软机同时具有在不同的音频格式之间互相转换的功能。
【保护方式】:注册码 + 试用功能限制
【编译语言】:Borland Delphi 6.0 - 7.0
【调试环境】:WinXP、PEiD、Ollydbg
【破解日期】:2005-11-08
【破解目的】:研究算法分析
【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
—————————————————————————————————
【破解过程】:
侦测:用PEiD查壳,无壳,Borland Delphi 6.0 - 7.0 编译。

试探:运行主程序注册,输入试炼码,确认!程序无提示!

下药:
Ollydbg载入主程序,用字符串插件查找一些关键字符,我们这里找到“Register successfully!Thank you for your support!”,
双击后来到 0057B530 处,然后向上来到 0057B4D0 处F2下断,F9运行,输入试炼信息:

***************** 试炼信息 ******************

Enter User Name:KuNgBiM

Enter registration code:9999999999999999999

*********************************************
0057B4D0    55            push ebp            ; 来到这里F2下断!F9运行!
0057B4D1    8BEC            mov ebp,esp
0057B4D3    6A 00         push 0
0057B4D5    6A 00         push 0
0057B4D7    53            push ebx
0057B4D8    8BD8            mov ebx,eax
0057B4DA    33C0            xor eax,eax
0057B4DC    55            push ebp
0057B4DD    68 B3B55700   push Arial_CD.0057B5B3
0057B4E2    64:FF30         push dword ptr fs:[eax]
0057B4E5    64:8920         mov dword ptr fs:[eax],esp
0057B4E8    8D55 FC         lea edx,dword ptr ss:[ebp-4]
0057B4EB    8B83 14030000   mov eax,dword ptr ds:[ebx+314]
0057B4F1    E8 3EE7ECFF   call Arial_CD.00449C34                     ; 寄存器全部清零
0057B4F6    8D55 F8         lea edx,dword ptr ss:[ebp-8]
0057B4F9    8B83 1C030000   mov eax,dword ptr ds:[ebx+31C]
0057B4FF    E8 30E7ECFF   call Arial_CD.00449C34                     ; 取用户注册信息
0057B504    A1 80B05800   mov eax,dword ptr ds:
0057B509    8B00            mov eax,dword ptr ds:[eax]
0057B50B    8B4D F8         mov ecx,dword ptr ss:[ebp-8]               ; 取假码
0057B50E    8B55 FC         mov edx,dword ptr ss:[ebp-4]               ; 取用户名
0057B511    E8 4EEDFFFF   call Arial_CD.0057A264                     ; ★关键CALL★F7跟进
0057B516    84C0            test al,al
0057B518    74 7E         je short Arial_CD.0057B598                   ; 关键跳转
0057B51A    A1 80B05800   mov eax,dword ptr ds:
0057B51F    8B00            mov eax,dword ptr ds:[eax]
0057B521    8B55 FC         mov edx,dword ptr ss:[ebp-4]
0057B524    E8 97F0FFFF   call Arial_CD.0057A5C0
0057B529    6A 40         push 40
0057B52B    B9 C0B55700   mov ecx,Arial_CD.0057B5C0         ; ASCII "Congratulations!"
0057B530    BA D4B55700   mov edx,Arial_CD.0057B5D4         ; ASCII "Register successfully!Thank you for your support!"
0057B535    A1 A4B35800   mov eax,dword ptr ds:
0057B53A    8B00            mov eax,dword ptr ds:[eax]
0057B53C    E8 7BFBEEFF   call Arial_CD.0046B0BC
0057B541    8BC3            mov eax,ebx
0057B543    E8 38C3EEFF   call Arial_CD.00467880
0057B548    A1 80B05800   mov eax,dword ptr ds:
0057B54D    8B00            mov eax,dword ptr ds:[eax]
0057B54F    8B80 60030000   mov eax,dword ptr ds:[eax+360]
0057B555    B2 01         mov dl,1
0057B557    E8 A007EEFF   call Arial_CD.0045BCFC
0057B55C    A1 80B05800   mov eax,dword ptr ds:
0057B561    8B00            mov eax,dword ptr ds:[eax]
0057B563    8B80 64030000   mov eax,dword ptr ds:[eax+364]
0057B569    B2 01         mov dl,1
0057B56B    E8 8C07EEFF   call Arial_CD.0045BCFC
0057B570    A1 80B05800   mov eax,dword ptr ds:
0057B575    8B00            mov eax,dword ptr ds:[eax]
0057B577    8B80 D4040000   mov eax,dword ptr ds:[eax+4D4]
0057B57D    B2 01         mov dl,1
0057B57F    E8 7807EEFF   call Arial_CD.0045BCFC
0057B584    A1 80B05800   mov eax,dword ptr ds:
0057B589    8B00            mov eax,dword ptr ds:[eax]
0057B58B    8B80 D8040000   mov eax,dword ptr ds:[eax+4D8]
0057B591    B2 01         mov dl,1
0057B593    E8 6407EEFF   call Arial_CD.0045BCFC
0057B598    33C0            xor eax,eax                                  ; 到这里就挂咯~~
0057B59A    5A            pop edx
0057B59B    59            pop ecx
0057B59C    59            pop ecx
0057B59D    64:8910         mov dword ptr fs:[eax],edx
0057B5A0    68 BAB55700   push Arial_CD.0057B5BA
0057B5A5    8D45 F8         lea eax,dword ptr ss:[ebp-8]
0057B5A8    BA 02000000   mov edx,2
0057B5AD    E8 3A98E8FF   call Arial_CD.00404DEC
0057B5B2    C3            retn                                       ; 完成验证
0057B5B3^ E9 7891E8FF   jmp Arial_CD.00404730
0057B5B8^ EB EB         jmp short Arial_CD.0057B5A5
0057B5BA    5B            pop ebx
0057B5BB    59            pop ecx
0057B5BC    59            pop ecx
0057B5BD    5D            pop ebp
0057B5BE    C3            retn                                       ; 返回窗口
........

跟进 0057B511    E8 4EEDFFFF   call Arial_CD.0057A264 ===========
0057A264    55            push ebp                                     ; 跟进来到这里
0057A265    8BEC            mov ebp,esp
0057A267    83C4 E4         add esp,-1C
0057A26A    53            push ebx
0057A26B    33DB            xor ebx,ebx
0057A26D    895D F4         mov dword ptr ss:[ebp-C],ebx
0057A270    894D F8         mov dword ptr ss:[ebp-8],ecx               ; 取假码
0057A273    8955 FC         mov dword ptr ss:[ebp-4],edx; 从EDX中取用户名,ASCII "KuNgBiM"
0057A276    8B45 FC         mov eax,dword ptr ss:[ebp-4]               ; 从EDX中取用户名后送入EAX
0057A279    E8 EAAFE8FF   call Arial_CD.00405268
0057A27E    8B45 F8         mov eax,dword ptr ss:[ebp-8]               ; 将假码也送入EAX
0057A281    E8 E2AFE8FF   call Arial_CD.00405268
0057A286    33C0            xor eax,eax
0057A288    55            push ebp
0057A289    68 D6A25700   push Arial_CD.0057A2D6
0057A28E    64:FF30         push dword ptr fs:[eax]
0057A291    64:8920         mov dword ptr fs:[eax],esp
0057A294    33DB            xor ebx,ebx
0057A296    8D55 E4         lea edx,dword ptr ss:[ebp-1C]
0057A299    8B45 FC         mov eax,dword ptr ss:[ebp-4]               ; 从EAX中取出用户名
0057A29C    E8 1F02FFFF   call Arial_CD.0056A4C0                     ; 检验用户名是否符合要求
0057A2A1    8D45 E4         lea eax,dword ptr ss:[ebp-1C]
0057A2A4    8D55 F4         lea edx,dword ptr ss:[ebp-C]
0057A2A7    E8 8802FFFF   call Arial_CD.0056A534                     ; ★算法CALL★F7跟进
0057A2AC    8B55 F4         mov edx,dword ptr ss:[ebp-C]   ; 获得MD5加密后的用户名代码(真注册码)
0057A2AF    8B45 F8         mov eax,dword ptr ss:[ebp-8]               ; 取出假码
0057A2B2    E8 0DAFE8FF   call Arial_CD.004051C4                     ; ★经典比较★
0057A2B7    75 02         jnz short Arial_CD.0057A2BB                  ; 跳则完蛋!★完美爆破点★
0057A2B9    B3 01         mov bl,1
0057A2BB    33C0            xor eax,eax
0057A2BD    5A            pop edx
0057A2BE    59            pop ecx
0057A2BF    59            pop ecx
0057A2C0    64:8910         mov dword ptr fs:[eax],edx
0057A2C3    68 DDA25700   push Arial_CD.0057A2DD
0057A2C8    8D45 F4         lea eax,dword ptr ss:[ebp-C]
0057A2CB    BA 03000000   mov edx,3
0057A2D0    E8 17ABE8FF   call Arial_CD.00404DEC
0057A2D5    C3            retn                                       ; 注册验证完毕
0057A2D6^ E9 55A4E8FF   jmp Arial_CD.00404730
0057A2DB^ EB EB         jmp short Arial_CD.0057A2C8
0057A2DD    8BC3            mov eax,ebx
0057A2DF    5B            pop ebx
0057A2E0    8BE5            mov esp,ebp
0057A2E2    5D            pop ebp
0057A2E3    C3            retn                                       ; 反馈验证信息
........

========================= 跟进 0057A2A7    E8 8802FFFF   call Arial_CD.0056A534 =========================

0056A534    55            push ebp                                     ; 跟进后来到这里!(标准MD5算法)
0056A535    8BEC            mov ebp,esp
0056A537    83C4 E8         add esp,-18
0056A53A    53            push ebx
0056A53B    56            push esi
0056A53C    57            push edi
0056A53D    33C9            xor ecx,ecx
0056A53F    894D EC         mov dword ptr ss:[ebp-14],ecx
0056A542    894D E8         mov dword ptr ss:[ebp-18],ecx
0056A545    8BF0            mov esi,eax
0056A547    8D7D F0         lea edi,dword ptr ss:[ebp-10]
0056A54A    A5            movs dword ptr es:[edi],dword ptr ds:[esi]   ; 第一个标准常数:A1E9C9CC
0056A54B    A5            movs dword ptr es:[edi],dword ptr ds:[esi]   ; 第二个标准常数:C5112DDA
0056A54C    A5            movs dword ptr es:[edi],dword ptr ds:[esi]   ; 第三个标准常数:B95DCE01
0056A54D    A5            movs dword ptr es:[edi],dword ptr ds:[esi]   ; 第四个标准常数:E5EB4BD0
0056A54E    8BFA            mov edi,edx
0056A550    33C0            xor eax,eax
0056A552    55            push ebp
0056A553    68 CFA55600   push Arial_CD.0056A5CF
0056A558    64:FF30         push dword ptr fs:[eax]
0056A55B    64:8920         mov dword ptr fs:[eax],esp
0056A55E    8BC7            mov eax,edi
0056A560    E8 63A8E9FF   call Arial_CD.00404DC8
0056A565    B3 10         mov bl,10
0056A567    8D75 F0         lea esi,dword ptr ss:[ebp-10]
0056A56A    FF37            push dword ptr ds:[edi]                      ; MD5循环运算开始
0056A56C    8D45 EC         lea eax,dword ptr ss:[ebp-14]
0056A56F    33D2            xor edx,edx
0056A571    8A16            mov dl,byte ptr ds:[esi]
0056A573    C1EA 04         shr edx,4
0056A576    83E2 0F         and edx,0F
0056A579    8A92 BCAD5800   mov dl,byte ptr ds:[edx+58ADBC]
0056A57F    E8 24AAE9FF   call Arial_CD.00404FA8
0056A584    FF75 EC         push dword ptr ss:[ebp-14]
0056A587    8D45 E8         lea eax,dword ptr ss:[ebp-18]
0056A58A    8A16            mov dl,byte ptr ds:[esi]
0056A58C    80E2 0F         and dl,0F
0056A58F    81E2 FF000000   and edx,0FF
0056A595    8A92 BCAD5800   mov dl,byte ptr ds:[edx+58ADBC]
0056A59B    E8 08AAE9FF   call Arial_CD.00404FA8
0056A5A0    FF75 E8         push dword ptr ss:[ebp-18]
0056A5A3    8BC7            mov eax,edi
0056A5A5    BA 03000000   mov edx,3
0056A5AA    E8 91ABE9FF   call Arial_CD.00405140
0056A5AF    46            inc esi
0056A5B0    FECB            dec bl
0056A5B2^ 75 B6         jnz short Arial_CD.0056A56A                  ; 向上循环
0056A5B4    33C0            xor eax,eax
0056A5B6    5A            pop edx
0056A5B7    59            pop ecx
0056A5B8    59            pop ecx
0056A5B9    64:8910         mov dword ptr fs:[eax],edx
0056A5BC    68 D6A55600   push Arial_CD.0056A5D6
0056A5C1    8D45 E8         lea eax,dword ptr ss:[ebp-18]
0056A5C4    BA 02000000   mov edx,2
0056A5C9    E8 1EA8E9FF   call Arial_CD.00404DEC
0056A5CE    C3            retn                                       ; 结束运算
0056A5CF^ E9 5CA1E9FF   jmp Arial_CD.00404730
0056A5D4^ EB EB         jmp short Arial_CD.0056A5C1
0056A5D6    5F            pop edi
0056A5D7    5E            pop esi
0056A5D8    5B            pop ebx
0056A5D9    8BE5            mov esp,ebp
0056A5DB    5D            pop ebp
0056A5DC    C3            retn                                       ; 返回程序
........

-------------------------------------------------------------------------------------------------------------------------
【算法总结】:

注册验证非常简单:

1、注册码固定为32位。

2、用户名位数必须大于1,记为Name。

3、把用户名进行标准MD5运算转换加密后得到密钥,结果记为KEY。

4、KEY转换为小写输出,则为注册码,结果记为SN。

即:SN = LCase(MD5(Name))

【完美注册验证爆破点】:

0057A2B7    75 02         jnz short Arial_CD.0057A2BB         ; nop掉!
-------------------------------------------------------------------------------------------------------------------------
【算法总结】:

注册验证非常简单:

1、注册码固定为32位。

2、用户名位数必须大于1,记为Name。

3、把用户名进行标准MD5运算转换加密后得到密钥,结果记为KEY。

4、KEY转换为小写输出,则为注册码,结果记为SN。

即:SN = LCase(MD5(Name))

【完美注册验证爆破点】:

0057A2B7    75 02         jnz short Arial_CD.0057A2BB         ; nop掉!

-------------------------------------------------------------------------------------------------------------------------
【注册机】:

注册机我就不写了,太简单了。。。

BTW:这么简单的注册验证都有,真实糟蹋了MD5算法!

【注册信息】:

Enter User Name:KuNgBiM

Enter registration code:ccc9e9a1da2d11c501ce5db9d04bebe5

猫:
MD5 转换模块~提取自《算法分析入门第十一课》
https://www.chinapyg.com/viewthread.php?tid=6570&extra=page%3D1

[ 本帖最后由 野猫III 于 2006-7-31 15:40 编辑 ]

haiyun 发表于 2006-8-1 18:35:53

偶底子太差了~~看不懂~~支持猫兄!

xingbing 发表于 2006-8-1 20:43:57

支持猫,多出算法分析。

wxh9833 发表于 2006-8-2 11:48:49

hnld 发表于 2008-1-21 17:01:13

真是会者不难,难者不会,我看了半天也没明白。

tianxj 发表于 2008-1-21 18:30:06

借用工具

hnld 发表于 2008-1-21 19:29:31

谢谢版主,版主真是热心人.

tianxj 发表于 2008-1-23 12:22:39

原帖由 hnld 于 2008-1-21 19:29 发表 https://www.chinapyg.com/images/common/back.gif
谢谢版主,版主真是热心人.

问问题总比灌水好

moyelin 发表于 2008-5-24 01:55:50

辛苦了!!学习下`~
页: [1]
查看完整版本: Arial CD Ripper V1.4.0 注册算法分析 by KuNgBiM[DFCG]