- UID
- 74
注册时间2005-1-12
阅读权限50
最后登录1970-1-1
感悟天道
该用户从未签到
|
【破解作者】 noTme[PYG]
【作者邮箱】 [email protected]
【作者主页】 https://www.chinapyg.com/
【使用工具】 OD1.1(2005.3修正版)、W32DASM、PEID0.93
【破解平台】 Win2000
【软件名称】 Windows 美容专家 1.3
【下载地址】 天空软件站
【软件简介】
你一定想让你的Windows与众不同,Windows美容专家就是您的最佳选择。
Windows美容专家是一款操作简单的专门美化你的系统界面的优秀软件,改变Windows系统古板陈旧的面貌,充分展示您个性的一面。软件的主要功能包括对以下设置的修改:开始菜单、系统图标、鼠标指针、IE/OE、文件夹、桌面壁纸、系统的颜色、系统的各种声音,还有最Cool的:您可以自己做QQ皮肤。
Windows美容专家,只有想不到,没有做不到!
【软件大小】 1.86M
【加壳方式】 无壳(Delphi)
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】
安装完之后,先用PEID0.93查壳,无壳,系Borland Delphi 6.0 - 7.0编写,嘿嘿!
有戏,今天算是找对男主角了!!
首先,W32DASM载入!等。。。。。
参考->串式参考->双击"错误,Windows 美容专家 注册认证失败"来到下面!
:004D4C6D EB0A jmp 004D4C79
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004D4BE8(C) <---鼠标右击此地址
|
* Possible StringData Ref from Code Obj ->"错误,Windows 美容专家 注册认证失败"
来到了我们的关键处了
:004D4BD7 E8F41FFFFF call 004C6BD0
:004D4BDC 8BD8 mov ebx, eax
:004D4BDE 8B45FC mov eax, dword ptr [ebp-04]
:004D4BE1 E82A45F3FF call 00409110
:004D4BE6 3BD8 cmp ebx, eax
:004D4BE8 0F8581000000 jne 004D4C6F <-就是这个了,跳了就GAME OVER 了.
爆破改了这个就OK!
好,W32DASM的任务就是这些,我们让它一边休息先!!
隆重请出我们的法宝 OD1.1 (2005.3修正版)
载入之!
ctrl+G 将在W32DASM中得到的地址004D4BD7粘贴入来到下面一段:
004D4BBF |.^\75 C9 \jnz short Style.004D4B8A
004D4BC1 |> 8D55 F0 lea edx,dword ptr ss:[ebp-10] ; 此处F2下断点
004D4BC4 |. 8B86 D40700>mov eax,dword ptr ds:[esi+7D4]
004D4BCA |. E8 3DCCF6FF call Style.0044180C ;推断此CALL计算机器码长度
004D4BCF |. 8B45 F0 mov eax,dword ptr ss:[ebp-10] ;EAX放了机器码长度
004D4BD2 |. E8 3945F3FF call Style.00409110 ;跟过此CALL,EAX里放了机器码的十六进制形式!
004D4BD7 |. E8 F41FFFFF call Style.004C6BD0 ;前面做了这么多铺垫,此CALL可能是关键CALL
004D4BDC |. 8BD8 mov ebx,eax ;先不跟进去,F8过.到此处,EaX里已经有了注
册码的十六形式!上面的CALL不是关键又是什么呢?
004D4BDE |. 8B45 FC mov eax,dword ptr ss:[ebp-4];ss:[ebp-4]中放的是假码,输入的.
004D4BE1 |. E8 2A45F3FF call Style.00409110 ;只是一个比较用CALL!!
004D4BE6 |. 3BD8 cmp ebx,eax
004D4BE8 |. 0F85 810000>jnz Style.004D4C6F ;内存注册机在此下断!
004D4BEE |. B2 01 mov dl,1
004D4BF0 |. A1 10B94600 mov eax,dword ptr ds:[46B910]
为了不错过关键CALL,我们在其入口处下一断点,然后F8单步跟过!!!!!
经过一番分析,我们找到了关键:004D4BD2 |. E8 3945F3FF call Style.00409110
跟进之!来到了下面这里了.(CALL的全部内容!)
004C6BD0 /$ 55 push ebp
004C6BD1 |. 8BEC mov ebp,esp
004C6BD3 |. 6A 00 push 0
004C6BD5 |. 53 push ebx
004C6BD6 |. 56 push esi
004C6BD7 |. 8BF0 mov esi,eax ;EAX放ESI,注意是机器码的十六进制形式.
004C6BD9 |. 33C0 xor eax,eax ;EAX清零
004C6BDB |. 55 push ebp
004C6BDC |. 68 9E6C4C00 push Style.004C6C9E
004C6BE1 |. 64:FF30 push dword ptr fs:[eax]
004C6BE4 |. 64:8920 mov dword ptr fs:[eax],esp
004C6BE7 |. BB B8100C00 mov ebx,0C10B8 ; 将0C10B8,十进制790712放到EBX,
怀疑此值为作者生日! ^_^
004C6BEC |. 8D45 FC lea eax,dword ptr ss:[ebp-4]
004C6BEF |. BA B46C4C00 mov edx,Style.004C6CB4 ; ASCII "Knightsoft"
004C6BF4 |. E8 6BDDF3FF call Style.00404964
004C6BF9 |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
004C6BFC |. E8 83DFF3FF call Style.00404B84 ;计算 "Knightsoft"的长度.
004C6C01 |. 85C0 test eax,eax ;长度放EAX
004C6C03 |. 7E 1B jle short Style.004C6C20 ;跳转没有实现
004C6C05 |. BA 01000000 mov edx,1
004C6C0A |> 8B4D FC /mov ecx,dword ptr ss:[ebp-4] ;"Knightsoft"放入ECX
004C6C0D |. 0FB64C11 FF |movzx ecx,byte ptr ds:[ecx+edx-1] ;逐位取 "Knightsoft"字符
004C6C12 |. 8D0C89 |lea ecx,dword ptr ds:[ecx+ecx*4] ;并将他们的ASCII+ASCII*4
004C6C15 |. 8D0C89 |lea ecx,dword ptr ds:[ecx+ecx*4] ;再来一次
004C6C18 |. 03D9 |add ebx,ecx ;累加到EBX,EBX原为0C10B8,十进制790712
004C6C1A |. 03DE |add ebx,esi ;加一次机器码
004C6C1C |. 42 |inc edx ;EDX =EDX+1
004C6C1D |. 48 |dec eax ;EAX=EAX+1
004C6C1E |.^ 75 EA \jnz short Style.004C6C0A ;没取完跳回去继续取!
004C6C20 |> 8D45 FC lea eax,dword ptr ss:[ebp-4]
004C6C23 |. BA C86C4C00 mov edx,Style.004C6CC8 ; ASCII "yaoyuan"
004C6C28 |. E8 37DDF3FF call Style.00404964
004C6C2D |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
004C6C30 |. E8 4FDFF3FF call Style.00404B84 ;下面的代码同上操作只是字符变成了"yaoyuan"
004C6C35 |. 85C0 test eax,eax
004C6C37 |. 7E 1B jle short Style.004C6C54
004C6C39 |. BA 01000000 mov edx,1
004C6C3E |> 8B4D FC /mov ecx,dword ptr ss:[ebp-4]
004C6C41 |. 0FB64C11 FF |movzx ecx,byte ptr ds:[ecx+edx-1]
004C6C46 |. 8D0C89 |lea ecx,dword ptr ds:[ecx+ecx*4]
004C6C49 |. 8D0C89 |lea ecx,dword ptr ds:[ecx+ecx*4]
004C6C4C |. 03D9 |add ebx,ecx
004C6C4E |. 03DE |add ebx,esi
004C6C50 |. 42 |inc edx
004C6C51 |. 48 |dec eax
004C6C52 |.^ 75 EA \jnz short Style.004C6C3E
004C6C54 |> 8D45 FC lea eax,dword ptr ss:[ebp-4]
004C6C57 |. BA D86C4C00 mov edx,Style.004C6CD8 ; ASCII "JSBuilder"
004C6C5C |. E8 03DDF3FF call Style.00404964
004C6C61 |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
004C6C64 |. E8 1BDFF3FF call Style.00404B84
004C6C69 |. 85C0 test eax,eax
004C6C6B |. 7E 1B jle short Style.004C6C88 ;下面的代码同上操作只是字符变成了"JSBuilder"
004C6C6D |. BA 01000000 mov edx,1
004C6C72 |> 8B4D FC /mov ecx,dword ptr ss:[ebp-4]
004C6C75 |. 0FB64C11 FF |movzx ecx,byte ptr ds:[ecx+edx-1]
004C6C7A |. 8D0C89 |lea ecx,dword ptr ds:[ecx+ecx*4]
004C6C7D |. 8D0C89 |lea ecx,dword ptr ds:[ecx+ecx*4]
004C6C80 |. 03D9 |add ebx,ecx
004C6C82 |. 03DE |add ebx,esi ;最后生成的注册码放在EBX!!!
004C6C84 |. 42 |inc edx
004C6C85 |. 48 |dec eax
004C6C86 |.^ 75 EA \jnz short Style.004C6C72
004C6C88 |> 33C0 xor eax,eax
004C6C8A |. 5A pop edx
004C6C8B |. 59 pop ecx
004C6C8C |. 59 pop ecx
004C6C8D |. 64:8910 mov dword ptr fs:[eax],edx
004C6C90 |. 68 A56C4C00 push Style.004C6CA5
004C6C95 |> 8D45 FC lea eax,dword ptr ss:[ebp-4]
004C6C98 |. E8 2FDCF3FF call Style.004048CC
004C6C9D \. C3 retn
004C6C9E .^ E9 CDD5F3FF jmp Style.00404270
004C6CA3 .^ EB F0 jmp short Style.004C6C95
004C6CA5 . 8BC3 mov eax,ebx
004C6CA7 . 5E pop esi
004C6CA8 . 5B pop ebx
004C6CA9 . 59 pop ecx
004C6CAA . 5D pop ebp
004C6CAB . C3 retn
-----------------------------------------------------------------------
最后就是做一些比较了,错误就显示错误之类,不再赘述!!!!
好了,就到这里。不当之处,请多指教!!
附上VBS注册机原代码:
-----------------------------------保存下面内容为.VBS文件----------------------
inp0=inputbox("请将机器码粘入下框:","Windows 美容专家 1.3注册机 by noTme[PYG]")
str1="Knightsoft"
str2="yaoyuan"
str3="JSBuilder"
regc=0
regcode=790712
for i=1 to len(str1)
regc=asc(mid(str1,i,1))
regc=regc+regc*4
regc=regc+regc*4
regcode=regcode+regc+inp0
next
for i=1 to len(str2)
regc=asc(mid(str2,i,1))
regc=regc+regc*4
regc=regc+regc*4
regcode=regcode+regc+inp0
next
for i=1 to len(str3)
regc=asc(mid(str3,i,1))
regc=regc+regc*4
regc=regc+regc*4
regcode=regcode+regc+inp0
next
inputbox "复制下列内容为注册码:","Windows 美容专家 1.3注册机 by noTme[PYG]",regcode
'----------------------------------end cut---------------------------------------
--------------------------------------------------------------------------------
【破解总结】
第一篇算法,甚为简单!初学者看。不当之处,请多指教!!
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! |
|