软件名称】computer Alarm Clock
【应用平台】Win9x/NT/2000/XP
【软件大小】660KB(package)
【软件限制】功能限制
【破解声明】破解只是感兴趣,无其它目的。失误之处敬请诸位大侠赐教!
【破解工具】fi.exe ollydbg.exe
【软件简介】Computer Alarm Clock is a desktop program with full-featured alarm system,
that allow an user to set multiple alarms. Each alarm can be set to play MP3 songs, CD
tracks, videos and MPEG movies or just display a message. Computer Alarm Clock can be
vastly customized and the whole package size is 660 Kb only!
========================================================================================
【分析过程】
用户名:ligyuan
试验码:123456789
这个软件不知道是什么时候下的,今天有时间就安装后看了下,软件无壳,未注册,每次启动
都要弹出注册窗口,软件注册后要重启后进行验证,估计是读注册表或文件,bp RegQueryValue ,
CreateFileA 下断点,读取文件时被拦下,F2取消断点,ALT+F9返回,初跟10几步后发现没有什
么重要的地方,继续下CreateFileA断点,F9,再次被断下,F2取消断点,ALT+F9返回,一路F8来
到这里:
00490D9C |. 85C0 test eax,eax ;用户名长度
00490D9E |. 7E 19 jle short cac.00490DB9
00490DA0 |. BA 01000000 mov edx,1 ;下面是计算用户名字符的ASCII的和
00490DA5 |> 8B4D F8 /mov ecx,dword ptr ss:[ebp-8]
00490DA8 |. 8A4C11 FF |mov cl,byte ptr ds:[ecx+edx-1]
00490DAC |. 81E1 FF000000 |and ecx,0FF
00490DB2 |. 014D DC |add dword ptr ss:[ebp-24],ecx
00490DB5 |. 42 |inc edx
00490DB6 |. 48 |dec eax
00490DB7 |.^ 75 EC jnz short cac.00490DA5
00490DB9 |> 8D55 F8 lea edx,dword ptr ss:[ebp-8]
00490DBC |. 8B45 DC mov eax,dword ptr ss:[ebp-24]
00490DBF |. E8 647FF7FF call cac.00408D28 ;把和转换为10进制值
00490DC4 |. 8D4D EC lea ecx,dword ptr ss:[ebp-14]
00490DC7 |. BA 01000000 mov edx,1
00490DCC |. 8B45 F8 mov eax,dword ptr ss:[ebp-8]
00490DCF |. E8 30A1FAFF call cac.0043AF04 ;把10进制值的最低位的值放入存储空间(r1)
00490DD4 |. 8D4D E8 lea ecx,dword ptr ss:[ebp-18]
00490DD7 |. BA 01000000 mov edx,1
00490DDC |. 8B45 F8 mov eax,dword ptr ss:[ebp-8]
00490DDF |. E8 04A1FAFF call cac.0043AEE8 ;把10进制的最高位值放入存储单元(r2)
00490DE4 |. 8D8D 04FEFFFF lea ecx,dword ptr ss:[ebp-1FC]
00490DEA |. BA 04000000 mov edx,4
00490DEF |. 8B45 F4 mov eax,dword ptr ss:[ebp-C]
00490DF2 |. E8 F1A0FAFF call cac.0043AEE8 ;取注册码的前4位
00490DF7 |. 8B85 04FEFFFF mov eax,dword ptr ss:[ebp-1FC]
00490DFD |. 8D4D E4 lea ecx,dword ptr ss:[ebp-1C]
00490E00 |. BA 01000000 mov edx,1
00490E05 |. E8 FAA0FAFF call cac.0043AF04 ;把前4位的最低位值放入存储单元(c1)
00490E0A |. 8D8D 00FEFFFF lea ecx,dword ptr ss:[ebp-200]
00490E10 |. BA 08000000 mov edx,8
00490E00490E15 |. 8B45 F4 mov eax,dword ptr ss:[ebp-C]
00490E18 |. E8 CBA0FAFF call cac.0043AEE8 ;取注册码的前8位
00490E1D |. 8B85 00FEFFFF mov eax,dword ptr ss:[ebp-200]
00490E23 |. 8D4D E0 lea ecx,dword ptr ss:[ebp-20]
00490E26 |. BA 01000000 mov edx,1
00490E2B |. E8 D4A0FAFF call cac.0043AF04 ;把注册码的前8位最后一位放入存储单元(c2)
00490E30 |. C683 900B0000>mov byte ptr ds:[ebx+B90],0
00490E37 |. 8B45 EC mov eax,dword ptr ss:[ebp-14]
00490E3A |. 8B55 E4 mov edx,dword ptr ss:[ebp-1C]
00490E3D |. E8 AE3DF7FF call cac.00404BF0 ;r1与c1比较
00490E42 75 23 jnz short cac.00490E67 ;不等,就跳
00490E44 |. 8B45 E8 mov eax,dword ptr ss:[ebp-18]
00490E47 |. 8B55 E0 mov edx,dword ptr ss:[ebp-20]
00490E4A |. E8 A13DF7FF call cac.00404BF0 ;r2与c2比较
00490E4F 75 16 jnz short cac.00490E67 ;不等就跳
00490E51 |. 8B45 F0 mov eax,dword ptr ss:[ebp-10]
00490E54 |. BA F40E4900 mov edx,cac.00490EF4 ; ASCII "a1"
00490E59 |. E8 923DF7FF call cac.00404BF0 ;注册码前两位与“a1”比较
00490E5E |. 75 07 jnz short cac.00490E67 ;不等就跳
00490E60 |. C683 900B0000>mov byte ptr ds:[ebx+B90],1
00490E67 |> 80BB 900B0000>cmp byte ptr ds:[ebx+B90],0
00490E6E |. 75 18 jnz short cac.00490E88 ;注册正确,跳向成功
00490E70 |. 80BB 9C0B0000>cmp byte ptr ds:[ebx+B9C],0
00490E77 74 0F je short cac.00490E88
========================================================================================
【分析总结】
这个软件我不知道作者是怎么想的 ,00490E70 这个比较我不知道是用来干什么的,不过对于我们来说又多了一个
暴破的地方。我们可以直接把 00490E6E 和 00490E77的条件跳转改为无条件跳转,就可以对软件进行完整暴破。
该软件虽然采取了重启验证的方法,注册信息放在同目录下的clapeoq.lst文件中但是验证部分却过于简单,只要找
到了地方,很快就能把它的算法注册机作出来,
下面是一个简单的注册程序