首页
社区
课程
招聘
[原创]WeBuilder 2008 V9.0(最新版) Trial 完美去限制
2008-6-22 18:41 6458

[原创]WeBuilder 2008 V9.0(最新版) Trial 完美去限制

2008-6-22 18:41
6458
【文章标题】:【原创】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的补丁方案和做好的补丁发布如下:

[培训]《安卓高级研修班(网课)》月薪三万计划

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (14)
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
李忠才 2008-6-22 19:18
2
0
非常精典的文章,带壳调试成功爆破.做出补丁,如能来个动画教程应该更受欢迎!
雪    币: 359
活跃值: (425)
能力值: ( LV9,RANK:150 )
在线值:
发帖
回帖
粉丝
iawen 3 2008-6-22 21:27
3
0
应该 是针对脱壳后的程序做的补丁!

否则是无法直接在加壳后的程序上直接NOP和改跳转,哈
雪    币: 256
活跃值: (393)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
wyqzm 1 2008-6-22 22:19
4
0
不脱壳也可以,挂个LPK即可
dup做的补丁针对压缩壳还算有效,加密壳基本是无效的.
雪    币: 321
活跃值: (271)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
combojiang 26 2008-6-22 23:51
5
0
分析得很详细,很好
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
bhcjll 2008-6-23 06:25
6
0
好教程,支持,学习中
雪    币: 575
活跃值: (152)
能力值: ( LV9,RANK:680 )
在线值:
发帖
回帖
粉丝
playboysen 16 2008-6-23 07:54
7
0
呵呵,这下你猜错了,这个文件补丁是针对原程序(未脱壳程序)的,dUP的补丁可以直接打在带压缩壳的程序上的哦
雪    币: 314
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
issasth 2008-6-23 07:59
8
0
webuilder.2008.v.9.0.0.97-patch

http://www.4shared.com/file/52356715/89a4ec71/webuilder2008v90097-patch.html

http://rapidshare.com/files/124342657/webuild_patched.7z
雪    币: 575
活跃值: (152)
能力值: ( LV9,RANK:680 )
在线值:
发帖
回帖
粉丝
playboysen 16 2008-6-23 10:14
9
0
感谢提供另一个补丁,呵呵,其实你知道在我们论坛里最终结果并不是最重要的,主要是参考分析思路破解过程,授人以渔哦
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
nirenyang 2008-6-23 19:51
10
0
我不得不出来为你鼓掌一下!

期待下一篇美文!
雪    币: 26435
活跃值: (18467)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2008-6-23 21:22
11
0
文章写的很好,但离精华帖要求还有点距离,例如没有算法分析过程等,故不设精华了。
雪    币: 575
活跃值: (152)
能力值: ( LV9,RANK:680 )
在线值:
发帖
回帖
粉丝
playboysen 16 2008-6-23 22:53
12
0
嗯 没关系的 关键是能给大家提供一种思路和借鉴 呵呵 在路上 Fighting!
雪    币: 575
活跃值: (152)
能力值: ( LV9,RANK:680 )
在线值:
发帖
回帖
粉丝
playboysen 16 2008-9-18 10:09
13
0
闲来无事重翻旧账,解决曾经遗留问题......

手动查找IAT可以成功脱壳
OEP:0061D618
RVA:006432F8
SIZE:00000CEC
然后点"获取输入表"修复脱壳文件成功!
雪    币: 162
活跃值: (63)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
<<Lanneret 1 2008-9-28 15:56
14
0
楼主这款Webuilder9.0在什么地方还有得下啊?我下到的都是9.1的,用类似的办法爆了以后部分功能不能用,打开部分设置窗口时马上就消失了(如:Tools下的Options 窗口只是一闪而过)
雪    币: 162
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
CHYX 2008-9-28 16:51
15
0
学习啊,多谢了。
游客
登录 | 注册 方可回帖
返回