【破解作者】 noTme[PYG]
【作者邮箱】 greh@eyou.com
【作者主页】 http://piaoyunge.5888.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---------------------------------------


--------------------------------------------------------------------------------
【破解总结】


第一篇算法,甚为简单!初学者看。不当之处,请多指教!!
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

  • 标 题: 答复
  • 作 者:skyege
  • 时 间:2005-06-22 20:25

晕 ,跟那个《网页特效梦工厂 XP V2.3 》一模一样啊。

算法

0050E8C0   /$  55           PUSH EBP
0050E8C1   |.  8BEC         MOV EBP,ESP
0050E8C3   |.  6A 00        PUSH 0
0050E8C5   |.  53           PUSH EBX
0050E8C6   |.  56           PUSH ESI
0050E8C7   |.  8BF0         MOV ESI,EAX
0050E8C9   |.  33C0         XOR EAX,EAX
0050E8CB   |.  55           PUSH EBP
0050E8CC   |.  68 8EE95000  PUSH unpacked.0050E98E
0050E8D1   |.  64:FF30      PUSH DWORD PTR FS:[EAX]
0050E8D4   |.  64:8920      MOV DWORD PTR FS:[EAX],ESP
0050E8D7   |.  BB D9D10E00  MOV EBX,0ED1D9
0050E8DC   |.  8D45 FC      LEA EAX,DWORD PTR SS:[EBP-4]
0050E8DF   |.  BA A4E95000  MOV EDX,unpacked.0050E9A4                         ;  ASCII "wangshuang"
0050E8E4   |.  E8 3F64EFFF  CALL unpacked.00404D28
0050E8E9   |.  8B45 FC      MOV EAX,DWORD PTR SS:[EBP-4]
0050E8EC   |.  E8 5766EFFF  CALL unpacked.00404F48
0050E8F1   |.  85C0         TEST EAX,EAX
0050E8F3   |.  7E 1B        JLE SHORT unpacked.0050E910
0050E8F5   |.  BA 01000000  MOV EDX,1
0050E8FA   |>  8B4D FC      /MOV ECX,DWORD PTR SS:[EBP-4]
0050E8FD   |.  0FB64C11 FF  |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]
0050E902   |.  8D0C89       |LEA ECX,DWORD PTR DS:[ECX+ECX*4]
0050E905   |.  8D0C89       |LEA ECX,DWORD PTR DS:[ECX+ECX*4]
0050E908   |.  03D9         |ADD EBX,ECX
0050E90A   |.  03DE         |ADD EBX,ESI  〈---ESI 里面的是机器码
0050E90C   |.  42           |INC EDX
0050E90D   |.  48           |DEC EAX
0050E90E   |.^ 75 EA        \JNZ SHORT unpacked.0050E8FA
0050E910   |>  8D45 FC      LEA EAX,DWORD PTR SS:[EBP-4]
0050E913   |.  BA B8E95000  MOV EDX,unpacked.0050E9B8                         ;  ASCII "yaoyuan"
0050E918   |.  E8 0B64EFFF  CALL unpacked.00404D28
0050E91D   |.  8B45 FC      MOV EAX,DWORD PTR SS:[EBP-4]
0050E920   |.  E8 2366EFFF  CALL unpacked.00404F48
0050E925   |.  85C0         TEST EAX,EAX
0050E927   |.  7E 1B        JLE SHORT unpacked.0050E944
0050E929   |.  BA 01000000  MOV EDX,1
0050E92E   |>  8B4D FC      /MOV ECX,DWORD PTR SS:[EBP-4]
0050E931   |.  0FB64C11 FF  |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]
0050E936   |.  8D0C89       |LEA ECX,DWORD PTR DS:[ECX+ECX*4]
0050E939   |.  8D0C89       |LEA ECX,DWORD PTR DS:[ECX+ECX*4]
0050E93C   |.  03D9         |ADD EBX,ECX
0050E93E   |.  03DE         |ADD EBX,ESI
0050E940   |.  42           |INC EDX
0050E941   |.  48           |DEC EAX
0050E942   |.^ 75 EA        \JNZ SHORT unpacked.0050E92E
0050E944   |>  8D45 FC      LEA EAX,DWORD PTR SS:[EBP-4]
0050E947   |.  BA C8E95000  MOV EDX,unpacked.0050E9C8                         ;  ASCII "JSBuilder"
0050E94C   |.  E8 D763EFFF  CALL unpacked.00404D28
0050E951   |.  8B45 FC      MOV EAX,DWORD PTR SS:[EBP-4]
0050E954   |.  E8 EF65EFFF  CALL unpacked.00404F48
0050E959   |.  85C0         TEST EAX,EAX
0050E95B   |.  7E 1B        JLE SHORT unpacked.0050E978
0050E95D   |.  BA 01000000  MOV EDX,1
0050E962   |>  8B4D FC      /MOV ECX,DWORD PTR SS:[EBP-4]
0050E965   |.  0FB64C11 FF  |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]
0050E96A   |.  8D0C89       |LEA ECX,DWORD PTR DS:[ECX+ECX*4]
0050E96D   |.  8D0C89       |LEA ECX,DWORD PTR DS:[ECX+ECX*4]
0050E970   |.  03D9         |ADD EBX,ECX
0050E972   |.  03DE         |ADD EBX,ESI
0050E974   |.  42           |INC EDX
0050E975   |.  48           |DEC EAX
0050E976   |.^ 75 EA        \JNZ SHORT unpacked.0050E962
0050E978   |>  33C0         XOR EAX,EAX
0050E97A   |.  5A           POP EDX
0050E97B   |.  59           POP ECX
0050E97C   |.  59           POP ECX
0050E97D   |.  64:8910      MOV DWORD PTR FS:[EAX],EDX
0050E980   |.  68 95E95000  PUSH unpacked.0050E995
0050E985   |>  8D45 FC      LEA EAX,DWORD PTR SS:[EBP-4]
0050E988   |.  E8 0363EFFF  CALL unpacked.00404C90
0050E98D   \.  C3           RETN

  • 标 题: 答复
  • 作 者:lucktiger
  • 时 间:2005-06-22 22:04

一个作者