- 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 编辑 ] |
|