playboysen 发表于 2008-6-24 20:49:17

WeBuilder 2008 V9.0(最新版) Trial 完美去限制分析

【文章标题】:【原创】WeBuilder 2008 V9.0(最新版) 完美去限制
【文章作者】: playboysen
【作者邮箱】: [email protected]
【作者相册】: 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 *,晕,查看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:
00D98011    05 00004000   add eax,1.00400000                  ; ASCII "MZP"
00D98016    8B4B 3D         mov ecx,dword ptr ds:
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:
00D98024    30E0            xor al,ah
00D98026    88C4            mov ah,al
00D98028    AA            stos byte ptr es:
00D98029^ E2 F8         loopd short 1.00D98023
00D9802B    8B43 08         mov eax,dword ptr ds:
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:
00D89F9C    57            push edi
00D89F9D    89E5            mov ebp,esp
00D89F9F    8D9C24 80C1FFFF lea ebx,dword ptr ss:很明显了,可以直接用ESP定律到达OEP=00A26844(篇幅有限,略过,不懂的话去看http://bbs.pediy.com/showthread.php?t=55385),脱壳用ImpREC修复,竟然未找到正确的IAT,无法修复,干脆放弃脱壳,直接带壳调试(你可以手动寻找IAT,方法是“黑鹰破解提高班 第十课”,我试了,不成功)

   直接OD载入原文件,F9运行出现NAG窗口后F12暂停,Alt+K打开堆栈调用窗口,双击最后一行反汇编窗口停在004F47D5处,说明NAG窗口的创建和这里有关,往上找段首到004F4678,右击——断点——硬件执行(带壳调试下段不能用F2断点)重新加载后F9运行,成功在004F4678处断下(OD左下角提示“硬件断点...”),此时看右下角堆栈窗口第一行“返回到 1.00A26A45”选中这一行回车后,直接返回到00A26A45处00A269D6    A1 B0B4A400   mov eax,dword ptr ds:
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:
00A269F9    8B00            mov eax,dword ptr ds:
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:
00A26A0D    8B00            mov eax,dword ptr ds:
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:
00A26A29    E8 F297ACFF   call 1.004F0220
00A26A2E    8B15 0014A400   mov edx,dword ptr ds:       ; 1.00A4B4A0
00A26A34    8902            mov dword ptr ds:,eax
00A26A36    A1 0014A400   mov eax,dword ptr ds:
00A26A3B    8B00            mov eax,dword ptr ds:
00A26A3D    8B10            mov edx,dword ptr ds:
00A26A3F    FF92 EC000000   call dword ptr ds:             ******这个调用可疑****
00A26A45    83F8 02         cmp eax,2                              *******返回到这里*****
00A26A48    0F84 5E010000   je 1.00A26BAC
00A26A4E    A1 0014A400   mov eax,dword ptr ds:
00A26A53    8B00            mov eax,dword ptr ds:重新加载跟踪发现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:
009FB12C    E8 EF50AFFF   call 1.004F0220
009FB131    A3 A0B2A400   mov dword ptr ds:,eax
009FB136    A1 A0B2A400   mov eax,dword ptr ds:
009FB13B    8B55 F0         mov edx,dword ptr ss:
009FB13E    8990 10030000   mov dword ptr ds:,edx
009FB144    8B55 F4         mov edx,dword ptr ss:
009FB147    8990 14030000   mov dword ptr ds:,edx
009FB14D    A1 A0B2A400   mov eax,dword ptr ds:
009FB152    8B10            mov edx,dword ptr ds:
009FB154    FF92 EC000000   call dword ptr ds:             ***那这个调用就很可疑了***
009FB15A    A1 A0B2A400   mov eax,dword ptr ds:          ******返回到这里******
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:,edx
009FB16C    68 81B19F00   push 1.009FB181
009FB171    8D45 FC         lea eax,dword ptr ss:
009FB174    E8 E39DA0FF   call 1.00404F5C
009FB179    C3            retn尝试把009FB121处的跳转ja改成jb后(机器码是77—>72)可以直接关闭软件!
到此全部工作完成,所有限制都已去除。

用dUP V2.16做文件补丁,共两处,如下:
00A26A3F    FF92 EC000000   call dword ptr ds:
改成
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的补丁方案和做好的补丁发布如下:


[ 本帖最后由 playboysen 于 2008-7-20 18:54 编辑 ]

gwh 发表于 2008-6-25 14:03:14

很好很强大,谢谢楼主

mrzhangfeng 发表于 2008-6-28 20:27:00

谢谢楼主提供这么好的资源啊!我正需要好好研究呢?谢谢楼主了!!!

dzbbs 发表于 2008-6-29 20:20:07

感谢楼主提供!!!下载收藏了~

月之精灵 发表于 2008-6-30 18:34:42

方便大家,给个脱壳的


楼主的ID让我想起了一个人哈

[ 本帖最后由 月之精灵 于 2008-6-30 19:36 编辑 ]

playboysen 发表于 2008-7-1 09:22:57

呵呵,想起谁了啊?/:018

walili 发表于 2008-7-1 22:18:55

谢谢。。。又学习了,碰到这种变形壳,新手就没办法了。

jsj731 发表于 2008-7-6 13:53:31

又是变形壳,学习一下.谢谢!

playboysen 发表于 2008-7-20 18:22:59

原帖由 月之精灵 于 2008-6-30 18:34 发表 https://www.chinapyg.com/images/common/back.gif
方便大家,给个脱壳的
33845
33846
楼主的ID让我想起了一个人哈


呵呵,月之精灵干脆好人做到底,顺便把此程序的脱壳过程简单说一下,大家也好对照学习,看看自己到底哪里弄错了哦

playboysen 发表于 2008-9-18 10:08:03

闲来无事重翻旧账,解决曾经遗留问题......

手动查找IAT可以成功脱壳
OEP:0061D618
RVA:006432F8
SIZE:00000CEC
然后点"获取输入表"修复脱壳文件成功!
页: [1] 2
查看完整版本: WeBuilder 2008 V9.0(最新版) Trial 完美去限制分析