频道栏目
首页 > 资讯 > 加密解密 > 正文

一个软件破解的简单分析

06-02-20        来源:[db:作者]  
收藏   我要投稿

软件名称】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文件中但是验证部分却过于简单,只要找
到了地方,很快就能把它的算法注册机作出来,
下面是一个简单的注册程序

相关TAG标签
上一篇:一份 SVCHOST.EXE 加载的清单
下一篇:不设管理员密码,后果很严重
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站