【文章标题】:【原创】WeBuilder 2008 V9.0(最新版) 完美去限制
【文章作者】: playboysen
【作者邮箱】: playboysen@126.com
【作者相册】: playboysen2.photo.163.com
【软件名称】: WeBuilder 2008 V9.0
【下载地址】: http://www.blumentals.net/download/webuild9.exe
【使用工具】: Ollydbg,PEID
【操作平台】: Windows XP SP2
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
TAG: 带壳调试 试用版爆破 去限制 dUP补丁
前几天心血来潮写了篇dll插件类型软件的破解算法分析(
http://bbs.pediy.com/showthread.php?t=66796),得到了大家的基本认可,自己觉得写了一下午的东西能给大家开阔思路,很值得,当有人说声“谢谢”的时候,感觉一身的疲惫刹那间烟消云散了,于是一鼓作气,写下本文,以飨读者,请高手飞过:
WeBuilder 2008是一款用来制作和修改网页的软件,界面美观,功能强大,但是较之DreamWeaver,她的身材却苗条的多,最新版是9.0。但唯一遗憾的是官方网站只提供试用版(trial)下载,此版本只能使用30次,而且每次启动和退出时都会提示购买(很烦哪),30次以后软件不再运行,必须卸载购买正式版,汗~~ 但是此试用版在功能上是无限制的,这就给我们今天的教程埋下了伏笔o(∩_∩)o...
我自己也算是个新手,所以就把自己拿到这个软件以后的分析思路较为完整的记录下来,以便告诉新人们,其实人人都很平凡,只要努力,不抛弃不放弃,最终你肯定会成功的,加油!
安装后试运行软件,发现NAG启动框,提示只能使用三十次还剩多少次等等,点击"Evaluate"打开主界面,查看Help文件及观察菜单项各条目并未发现有功能限制,关闭软件——又出现一个NAG窗口提示购买,点“Close”关闭。现在心里已经有个谱了,我们要做的就是去除启动和关闭时的NAG窗口,因为如果试用30次以后,NAG启动框肯定会屏蔽主窗口不让你用(经验,软件见多了你就知道了,呵呵)
首先想到脱壳:PEID查壳Nothing found [Overlay] *,晕,查看EP区段发现“UPX0”,猜测这是个UPX的变形壳,OD载入(竟然并未提示软件被压缩):
00D98000 > E8 00000000 call 1.00D98005
00D98005 58 pop eax
00D98006 83D8 05 sbb eax,5
00D98009 89C3 mov ebx,eax
00D9800B 83C3 30 add ebx,30
00D9800E 8B43 39 mov eax,dword ptr ds:[ebx+39]
00D98011 05 00004000 add eax,1.00400000 ; ASCII "MZP"
00D98016 8B4B 3D mov ecx,dword ptr ds:[ebx+3D]
00D98019 89C6 mov esi,eax
00D9801B 89C7 mov edi,eax
00D9801D 8CD8 mov ax,ds
00D9801F 8EC0 mov es,ax
00D98021 B4 00 mov ah,0
00D98023 AC lods byte ptr ds:[esi]
00D98024 30E0 xor al,ah
00D98026 88C4 mov ah,al
00D98028 AA stos byte ptr es:[edi]
00D98029 ^ E2 F8 loopd short 1.00D98023
00D9802B 8B43 08 mov eax,dword ptr ds:[ebx+8]
00D9802E 50 push eax
00D9802F C3 retn
在第一行F7单步,然后F8走到00D9802F会返回到此:
00D89F90 60 pushad
00D89F91 BE 0080AB00 mov esi,1.00AB8000
00D89F96 8DBE 009094FF lea edi,dword ptr ds:[esi+FF949000]
00D89F9C 57 push edi
00D89F9D 89E5 mov ebp,esp
00D89F9F 8D9C24 80C1FFFF lea ebx,dword ptr ss:[esp-3E80]
很明显了,可以直接用ESP定律到达OEP=00A26844(篇幅有限,略过,不懂的话去看
http://bbs.pediy.com/showthread.php?t=55385),脱壳用ImpREC修复,竟然未找到正确的IAT,无法修复,干脆放弃脱壳,直接带壳调试(你可以手动寻找IAT,方法是“黑鹰破解提高班 第十课”,我试了,不成功)
直接OD载入原文件,F9运行出现NAG窗口后F12暂停,Alt+K打开堆栈调用窗口,如下图:
地址 堆栈 函数过程 / 参数 调用来自 结构
0012FEC8 77D19418 包含ntdll.KiFastSystemCallRet USER32.77D19416 0012FEF8
0012FECC 004F8659 1.00408F0C 1.004F8654 0012FEF8
0012FEFC 004F7CA0 ? 1.004F8564 1.004F7C9B 0012FEF8
0012FF20 004F47DA 1.004F7C84 1.004F47D5 0012FF7C
双击最后一行反汇编窗口停在004F47D5处,说明NAG窗口的创建和这里有关,网上找段首到004F4678,右击——断点——硬件执行(带壳调试下段不能用F2断点)重新加载后F9运行,成功在004F4678处断下(OD左下角提示“硬件断点...”),此时看右下角堆栈窗口第一行“返回到 1.00A26A45”选中这一行回车后,直接返回到00A26A45处
00A269D6 A1 B0B4A400 mov eax,dword ptr ds:[A4B4B0]
00A269DB 50 push eax
00A269DC E8 9B189EFF call 1.0040827C ; jmp 到 kernel32.UnmapViewOfFile
00A269E1 85FF test edi,edi
00A269E3 0F84 C3010000 je 1.00A26BAC
00A269E9 57 push edi
00A269EA E8 4D139EFF call 1.00407D3C ; jmp 到 kernel32.CloseHandle
00A269EF E9 B8010000 jmp 1.00A26BAC
00A269F4 A1 C011A400 mov eax,dword ptr ds:[A411C0]
00A269F9 8B00 mov eax,dword ptr ds:[eax]
00A269FB 83C0 50 add eax,50
00A269FE BA 246CA200 mov edx,1.00A26C24 ; ASCII "help.chm"
00A26A03 E8 A8E59DFF call 1.00404FB0
00A26A08 A1 C011A400 mov eax,dword ptr ds:[A411C0]
00A26A0D 8B00 mov eax,dword ptr ds:[eax]
00A26A0F BA 386CA200 mov edx,1.00A26C38 ; ASCII "WeBuilder 2008"
00A26A14 E8 5F0FADFF call 1.004F7978
00A26A19 6A 00 push 0
00A26A1B E8 74229EFF call 1.00408C94 ; jmp 到 USER32.MessageBeep
00A26A20 33C9 xor ecx,ecx
00A26A22 B2 01 mov dl,1
00A26A24 A1 784BA200 mov eax,dword ptr ds:[A24B78]
00A26A29 E8 F297ACFF call 1.004F0220
00A26A2E 8B15 0014A400 mov edx,dword ptr ds:[A41400] ; 1.00A4B4A0
00A26A34 8902 mov dword ptr ds:[edx],eax
00A26A36 A1 0014A400 mov eax,dword ptr ds:[A41400]
00A26A3B 8B00 mov eax,dword ptr ds:[eax]
00A26A3D 8B10 mov edx,dword ptr ds:[eax]
00A26A3F FF92 EC000000 call dword ptr ds:[edx+EC] ******这个调用可疑****
00A26A45 83F8 02 cmp eax,2 *******返回到这里*****
00A26A48 0F84 5E010000 je 1.00A26BAC
00A26A4E A1 0014A400 mov eax,dword ptr ds:[A41400]
00A26A53 8B00 mov eax,dword ptr ds:[eax]
重新加载跟踪发现00A26A3F的call就是调用NAG的,尝试几次修改它上面的跳转(如00A269E3处)不成功,直接把00A26A3F给NOP掉——成功进入主界面!在记事本上做好记录,接着来处理软件关闭时的NAG。
OD加载运行软件后点关闭按钮,出现NAG时同上用F12暂停法定位关键call,堆栈返回后到达009FB15A,如下
009FB11E DFE0 fstsw ax
009FB120 9E sahf
009FB121 77 41 ja short 1.009FB164 *****关键的一个跳转*****
009FB123 8BCB mov ecx,ebx
009FB125 B2 01 mov dl,1
009FB127 A1 9CAA9F00 mov eax,dword ptr ds:[9FAA9C]
009FB12C E8 EF50AFFF call 1.004F0220
009FB131 A3 A0B2A400 mov dword ptr ds:[A4B2A0],eax
009FB136 A1 A0B2A400 mov eax,dword ptr ds:[A4B2A0]
009FB13B 8B55 F0 mov edx,dword ptr ss:[ebp-10]
009FB13E 8990 10030000 mov dword ptr ds:[eax+310],edx
009FB144 8B55 F4 mov edx,dword ptr ss:[ebp-C]
009FB147 8990 14030000 mov dword ptr ds:[eax+314],edx
009FB14D A1 A0B2A400 mov eax,dword ptr ds:[A4B2A0]
009FB152 8B10 mov edx,dword ptr ds:[eax]
009FB154 FF92 EC000000 call dword ptr ds:[edx+EC] ***那这个调用就很可疑了***
009FB15A A1 A0B2A400 mov eax,dword ptr ds:[A4B2A0] ******返回到这里******
009FB15F E8 E48EA0FF call 1.00404048
009FB164 33C0 xor eax,eax
009FB166 5A pop edx
009FB167 59 pop ecx
009FB168 59 pop ecx
009FB169 64:8910 mov dword ptr fs:[eax],edx
009FB16C 68 81B19F00 push 1.009FB181
009FB171 8D45 FC lea eax,dword ptr ss:[ebp-4]
009FB174 E8 E39DA0FF call 1.00404F5C
009FB179 C3 retn
尝试把009FB121处的跳转ja改成jb后(机器码是77—>72)可以直接关闭软件!
到此全部工作完成,所有限制都已去除。
用dUP V2.16做文件补丁,共两处,如下:
00A26A3F FF92 EC000000 call dword ptr ds:[edx+EC]
改成
00A26A3F 90 nop
00A26A40 90 nop
00A26A41 90 nop
00A26A42 90 nop
00A26A43 90 nop
00A26A44 90 nop
*******************************************************
009FB121 /77 41 ja short webuild.009FB164
改成
009FB121 /72 41 jb short webuild.009FB164
dUP的补丁方案和做好的补丁发布如下:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课