Arial CD Ripper V1.4.0 注册算法分析,注册算法,加密算法 2008年06月22日 星期日 下午 11:45 【作者邮箱】:gb_1227@163.com 【软件名称】: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掉! ------------------------------------------------------------------------------------------------------------------------- 【注册机】: 注册机我就不写了,太简单了。。。 BTW:这么简单的注册验证都有,真实糟蹋了MD5算法! 【注册信息】: Enter User Name:KuNgBiM Enter registration code:ccc9e9a1da2d11c501ce5db9d04bebe5 |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-30 03:28 , Processed in 0.322994 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.