- UID
 - 8671
 
 注册时间2006-2-27
阅读权限40
最后登录1970-1-1
独步武林 
   
 
 
 
TA的每日心情  | 开心 2018-5-6 16:27 | 
|---|
 
  签到天数: 7 天 [LV.3]偶尔看看II  
 | 
 
转自: 
http://www.chinaitpower.com/2005Nov/2005-11-17/209077.html 
 
【作  者】:[KuNgBiM[DFCG]  
【时  间】:[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:[58B080] 
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:[58B080] 
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:[58B3A4] 
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:[58B080] 
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:[58B080] 
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:[58B080] 
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:[58B080] 
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 转换模块~提取自《[PYG]算法分析入门第十一课》 
https://www.chinapyg.com/viewthr ... &extra=page%3D1 
 
[ 本帖最后由 野猫III 于 2006-7-31 15:40 编辑 ] |   
 
 
 
 |