【破文标题】SMC技术破解Winlicense 2.06 KEY保护+VMP的程序
【破文作者】wqhlgr
【破解工具】OllyICE,PEiD v0.95
【破解平台】WinXP sp2
【更新时间】 2009-04-25
【软件语言】 中文
【应用平台】 Win2000/WinXP/VISTA
【软件性质】 商业软件
【软件大小】 1.7M
【保护方式】 Winlicense 2.06 KEY保护+VMP
【从本文你可以学到】1. SMC     2.  过WL2.06 反FILI PATCH    3. PATCH WL2.06硬件KEY
    朋友让我帮他破一个程序,程序的主要内容在DLL中,DLL用了WL key保护,PEID查看结果如图,有VMP所以脱得难度很大了。于是便试着脱了一下。
   


   1.尝试脱壳 
   由于有VMP,所以修复的难度很大了,DLL脱壳还要重定位,很麻烦,换条路试试吧。于是便试着用对付一般壳的方法来试试吧,想到了SMC法,于是试着用SMC来PATCH。PATCH硬件KEY很简单,可以看SHOOOO的文章。这里我用了一个自动PATCH脚本:TM - WL HWID & TRIAL L.B.C. BASIC Unpacker 1.0.txt这脚本有一个帮你找硬件KEY PATCH的功能,于是载入程序跑这脚本。跑完后看记录如图 HWID WORD ADDRESS a5dd81  61f27c3a,这就是地址和KEY的值,下面的NEW HWID 就是你的硬件地址,只要在A5DD81硬件访问断点把最后一次变成61F27CA的时候改为你的硬件ID就PATCH成功了,找完后记下来,确实破解了,但这样离不开OD.

   

下图是最后一次这里的值变为61F27C3A,在这改成你的硬件ID就可以搞定了,但是退出OD就不行了
  

SMC PATCH key
于是便想到了SMC。
下面OD重新载入2次F8经过PUSHAD后F9,到了SMC的地方 
下面的指令用不到,可以替换成我们的SMC指令
首先让00A76260  ^\E9 AEEFFEFF     jmp     00A65213,让他JMP到090f0b4,然后比较0a5dd81中的地址是否为61f27c3a是就PATCH成我们的硬件ID117be641,由于是个DLL文件,所以他的基址是会变得,SMC代码要比EXE的特殊一点,如下:0090F0B4    53              

下面是我写的SMC代码
push    ebx                             //保护ebx
0090F0B5    E8 00000000     call    0090F0BA
0090F0BA    5B              pop     ebx                 //得到EIP
0090F0BB    C783 A7711600 6>mov     dword ptr [ebx+1671A7], FFE98E66     //PATCH的地址
0090F0C5    5B              pop     ebx                         // 恢复ebx        0090F0C6    E9 9D010000     jmp     0090F268                        //继续程序。下面的代码也差不多,不再赘述。
0090F0CB    53              push    ebx                
0090F0CC    E8 00000000     call    0090F0D1
0090F0D1    5B              pop     ebx
0090F0D2    81BB B0EC1400 3>cmp     dword ptr [ebx+14ECB0], 61F27C3A  //比较与硬件ID
0090F0DC    5B              pop     ebx
0090F0DD    74 05           je      short 0090F0E4
0090F0DF    E9 2F611500     jmp     00A65213
0090F0E4    53              push    ebx
0090F0E5    E8 00000000     call    0090F0EA
0090F0EA    5B              pop     ebx
0090F0EB    C783 97EC1400 4>mov     dword ptr [ebx+14EC97], 117BE641  //PATCH你的硬件ID
0090F0F5    5B              pop     ebx
0090F0F6    E9 18611500     jmp     00A65213
二进制
53 E8 00 00 00 00 5B C7 83 A7 71 16 00 66 8E E9 FF 5B E9 9D 01 00 00 53 E8 00 00 00 00 5B 81 BB
B0 EC 14 00 3A 7C F2 61 5B 74 05 E9 2F 61 15 00 53 E8 00 00 00 00 5B C7 83 97 EC 14 00 41 E6 7B
11 5B E9 18 61 15 00
改完后就成功破解了,呵呵,然后复制到可执行文件保存,就可以了。
运行后却出现了错误框 


有反FILE PATCHING

下面是过WL 2.06 反FILE PATCHING

在GetProcAddress的末尾retn8处按F2设置断点

当得到知道EAX变成这样时


在CheckSumMappedFile函数地址时在该函数起始地址处按F2设置断点。F9运行。
在函数FreeLibrary开始地址处按f2设置断点,F9运行,此时断下来后看ECX

把ECX用C32ASM写入文件最后就搞定了
总结:
1.要敢于尝试,不要看到是强壳+强壳就不敢动了不试怎么知道?
2.会写SMC代码


由于程序的KEY是朋友花钱买的,被作者看到后就会给BAN了,所以不发程序了(虽然也可以PATCH黑名单,但更新后作者换新KEY就不行了)
脚本下载

上传的附件 TM - WL HWID & TRIAL L.B.C. BASIC Unpacker 1.0.rar