【破文标题】:不脱壳破解《超级文件捆绑 V2.0》分析 + SMC补丁

【破文作者】:KuNgBiM[DFCG]

【作者邮箱】:gb_1227@163.com

【软件名称】:超级文件捆绑 V2.0

【保护方式】:功能限制 + 提示框 + 自校验 (其实这个软件是程序完整的Demo版,但没有注册项功能而已!)

【加密保护】:ASPack 2.12 -> Alexey Solodovnikov

【编译语言】:Microsoft Visual Basic 5.0 / 6.0

【作者声明】:初学Crack,只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!

—————————————————————————————————

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 【脱壳过程】 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

1.运行程序,东看看西看看,查找程序有那些功能限制和对我们有用的东西。

2.用PEiD查壳,ASPack 2.12 -> Alexey Solodovnikov,是简单的压缩壳,脱壳过程我就不写了,不会脱也没关系,因为程序有自校验,脱了也等于白脱,反正后面我们要不脱壳打补丁。(脱壳先不管,去校验麻烦,那我们就继续分析)

3.用Ollydbg载入,跟踪分析破解。

————————————————————

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 【除壳过程】 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Ollydbg载入主程序:

004B9001 >  60               pushad                          ;停在这里,F8一次
004B9002    E8 03000000      call cjkb.004B900A              ;来到这里,这时查看寄存器窗口
004B9007  - E9 EB045D45      jmp 45A894F7
004B900C    55               push ebp
004B900D    C3               retn
004B900E    E8 01000000      call cjkb.004B9014
004B9013    EB 5D            jmp short cjkb.004B9072
004B9015    BB EDFFFFFF      mov ebx,-13
004B901A    03DD             add ebx,ebp
........

\\\\\\\\\\\\\\\寄存器\\\\\\\\\\\\\\\\

EAX 00000000
ECX 0012FFB0
EDX 7FFE0304
EBX 7FFDF000
ESP 0012FFA4      // esp=0012ffa4
EBP 0012FFF0
ESI 77F57D70 ntdll.77F57D70
EDI 77F944A8 ntdll.77F944A8
EIP 004B9002 cjkb.004B9002

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

根据ESP定律规则,现在在命令栏中下 hr 0012ffa4 命令,回车,F9运行:

004B93B0   /75 08            jnz short cjkb.004B93BA          ;这里断下,继续F7
004B93B2   |B8 01000000      mov eax,1
004B93B7   |C2 0C00          retn 0C
004B93BA   \68 50284000      push cjkb.00402850               ;这里 00402850 所指的就是OEP,F7继续走
004B93BF    C3               retn                             ;飞向光明之颠~~ F7继续
004B93C0    8B85 26040000    mov eax,dword ptr ss:[ebp+426]
........

00402850    68 B49F4200      push cjkb.00429FB4               ;飞向这里,程序入口 ^__^
00402855    E8 EEFFFFFF      call cjkb.00402848               ;jmp to msvbvm60.ThunRTMain     <-- 看到这里可以断定该程序是VB写的!
0040285A    0000             add byte ptr ds:[eax],al
0040285C    48               dec eax
0040285D    0000             add byte ptr ds:[eax],al
0040285F    0030             add byte ptr ds:[eax],dh
00402861    0000             add byte ptr ds:[eax],al
00402863    0040 00          add byte ptr ds:[eax],al
00402866    0000             add byte ptr ds:[eax],al
00402868    0000             add byte ptr ds:[eax],al
........

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 【分析破解过程】 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

我们知道了该程序是VB写的,而且在做准备工作的时候我们得到了唯一的重要破解入手点:

“未注册版本”....“ * 注册版本才可以正常使用此项功能 *”....“注册用户功能。”....

光这3条信息提示,我们就足够了,好了开始接着分析:

先取消先前的所有断点,然后使用VB专用断点:rtcMsgBox

在Ollydbg命令栏中输入 bpx rtcMsgBox 命令,回车,F9运行:

①运行后的准备工作:启动框 --> 加载需要合并的文件 --> 高级设置 -->  版本 --> (随便选一项填写)

刚刚输入一个字符时就被断下了,看来我们下断没错:

004AAECC    53               push ebx
004AAECD    51               push ecx
004AAECE    C745 AC 08000000 mov dword ptr ss:[ebp-54],8
004AAED5    FF15 94104000    call dword ptr ds:[401094]             ;msvbvm60.rtcMsgBox  ★这里断下,试试nop掉!再F9运行!★①
004AAEDB    8D55 BC          lea edx,dword ptr ss:[ebp-44]
004AAEDE    8D45 C0          lea eax,dword ptr ss:[ebp-40]
004AAEE1    52               push edx
004AAEE2    8D4D C4          lea ecx,dword ptr ss:[ebp-3C]
........

F9运行后,“版本”项内其他功能都一切都正常了,没有烦人的提示框了,哈哈,记录下该点!

————————————————————————————————————————————————————————————————

②接着解除下一个烦人的提示框:

运行后的准备工作:再次选择程序中“运行”项 --> 热键呼出 --> (随便选一项填写)

这时也同上次的一样,刚刚输入一个字符时就被断下了:

004ABB2D    6A 40            push 40
004ABB2F    51               push ecx
004ABB30    FF15 94104000    call dword ptr ds:[401094]             ;msvbvm60.rtcMsgBox  ★这里断下,试试nop掉!再F9运行!★②
004ABB36    8D55 98          lea edx,dword ptr ss:[ebp-68]
004ABB39    8D45 A8          lea eax,dword ptr ss:[ebp-58]
004ABB3C    52               push edx
004ABB3D    8D4D B8          lea ecx,dword ptr ss:[ebp-48]
004ABB40    50               push eax
004ABB41    8D55 C8          lea edx,dword ptr ss:[ebp-38]
004ABB44    51               push ecx
........

F9运行后,““运行”项内其他功能都一切都正常了,没有烦人的提示框了,哈哈,记录下该点!

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 【SMC补丁制作过程】 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

看来这么简单就搞定了所有的功能限制,好了,我们就接着来做SMC补丁吧,若编程的话,程序烦琐,这里还是采用大众化的模式:用补丁器做补丁吧。^__^

我们事先已经知道了补丁应该应用的位置(如下):

【爆破地址】

第①处:

004AAED5    FF15 94104000   call dword ptr ds:[401094]             ;nop掉!

改:

004AAED5    90              nop
004AAED6    90              nop
004AAED7    90              nop
004AAED8    90              nop
004AAED9    90              nop
004AAEDA    90              nop

第②处:

004ABB30    FF15 94104000   call dword ptr ds:[401094]             ;nop掉!

改:

004ABB30    90              nop
004ABB31    90              nop
004ABB32    90              nop
004ABB33    90              nop
004ABB34    90              nop
004ABB35    90              nop

那么我们就打开diablo2oo2前辈给我留下的好东东:dUP108汉化版(Diablo2oo2s Universal Patcher V1.08)

1.先在“补丁设置”中,填写好相应的内容。

2.然后接着选择“偏移量补丁”栏,先找到我们将要补丁的原始程序(当然,破解文件那一栏就等它空着吧),然后选择“虚拟地址模式”(这是为了对付象该文所涉及的类似的带壳程序),然后在“添加地址”栏内,完整填写我们刚刚所得到的相关内容:



偏移量:4AAED5
原始字节:FF1594100
修改字节:909090909

或:

偏移量:4AAED5
原始字节:FF
修改字节:90




偏移量:4ABB30
原始字节:FF1594100
修改字节:909090909

或:

偏移量:4ABB30
原始字节:FF
修改字节:90

3.最后选择“创建补丁程序”,保存到你要保存的目录下就OK了!运行试试吧~~~ ^__^

——————————————————————————————————————————————————————————————

【破解总结】

本文难度不大,主要是做一个抛砖引玉的作用,本文只是才用了暴力破解,对于判断是否注册的地方一直还没找到,希望有高手能指点一二。

------------------------------------------------------------------------------------------


      版权所有(C)2005 KuNgBiM[DFCG]         Copyright (C) 2005 KuNgBiM[DFCG]


-------------------------------------------------------------------------------------------
                    Cracked By KuNgBiM[DFCG]

                           2005-07-20

                           3:32:21 AM