飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6777|回复: 12

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

[复制链接]
  • TA的每日心情
    难过
    2022-2-6 09:25
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2008-6-24 20:49:17 | 显示全部楼层 |阅读模式
    【文章标题】:【原创】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 [Overlay] *,晕,查看EP区段发现“UPX0”,猜测这是个UPX的变形壳,OD载入(竟然并未提示软件被压缩):
    1. 00D98000 >  E8 00000000     call 1.00D98005
    2. 00D98005    58              pop eax
    3. 00D98006    83D8 05         sbb eax,5
    4. 00D98009    89C3            mov ebx,eax
    5. 00D9800B    83C3 30         add ebx,30
    6. 00D9800E    8B43 39         mov eax,dword ptr ds:[ebx+39]
    7. 00D98011    05 00004000     add eax,1.00400000                  ; ASCII "MZP"
    8. 00D98016    8B4B 3D         mov ecx,dword ptr ds:[ebx+3D]
    9. 00D98019    89C6            mov esi,eax
    10. 00D9801B    89C7            mov edi,eax
    11. 00D9801D    8CD8            mov ax,ds
    12. 00D9801F    8EC0            mov es,ax
    13. 00D98021    B4 00           mov ah,0
    14. 00D98023    AC              lods byte ptr ds:[esi]
    15. 00D98024    30E0            xor al,ah
    16. 00D98026    88C4            mov ah,al
    17. 00D98028    AA              stos byte ptr es:[edi]
    18. 00D98029  ^ E2 F8           loopd short 1.00D98023
    19. 00D9802B    8B43 08         mov eax,dword ptr ds:[ebx+8]
    20. 00D9802E    50              push eax
    21. 00D9802F    C3              retn
    复制代码
    在第一行F7单步,然后F8走到00D9802F会返回到此:
    1. 00D89F90    60              pushad
    2. 00D89F91    BE 0080AB00     mov esi,1.00AB8000
    3. 00D89F96    8DBE 009094FF   lea edi,dword ptr ds:[esi+FF949000]
    4. 00D89F9C    57              push edi
    5. 00D89F9D    89E5            mov ebp,esp
    6. 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打开堆栈调用窗口,双击最后一行反汇编窗口停在004F47D5处,说明NAG窗口的创建和这里有关,往上找段首到004F4678,右击——断点——硬件执行(带壳调试下段不能用F2断点)重新加载后F9运行,成功在004F4678处断下(OD左下角提示“硬件断点...”),此时看右下角堆栈窗口第一行“返回到 1.00A26A45”选中这一行回车后,直接返回到00A26A45处
    1. 00A269D6    A1 B0B4A400     mov eax,dword ptr ds:[A4B4B0]
    2. 00A269DB    50              push eax
    3. 00A269DC    E8 9B189EFF     call 1.0040827C                     ; jmp 到 kernel32.UnmapViewOfFile
    4. 00A269E1    85FF            test edi,edi
    5. 00A269E3    0F84 C3010000   je 1.00A26BAC
    6. 00A269E9    57              push edi
    7. 00A269EA    E8 4D139EFF     call 1.00407D3C                     ; jmp 到 kernel32.CloseHandle
    8. 00A269EF    E9 B8010000     jmp 1.00A26BAC
    9. 00A269F4    A1 C011A400     mov eax,dword ptr ds:[A411C0]
    10. 00A269F9    8B00            mov eax,dword ptr ds:[eax]
    11. 00A269FB    83C0 50         add eax,50
    12. 00A269FE    BA 246CA200     mov edx,1.00A26C24                  ; ASCII "help.chm"
    13. 00A26A03    E8 A8E59DFF     call 1.00404FB0
    14. 00A26A08    A1 C011A400     mov eax,dword ptr ds:[A411C0]
    15. 00A26A0D    8B00            mov eax,dword ptr ds:[eax]
    16. 00A26A0F    BA 386CA200     mov edx,1.00A26C38                  ; ASCII "WeBuilder 2008"
    17. 00A26A14    E8 5F0FADFF     call 1.004F7978
    18. 00A26A19    6A 00           push 0
    19. 00A26A1B    E8 74229EFF     call 1.00408C94                     ; jmp 到 USER32.MessageBeep
    20. 00A26A20    33C9            xor ecx,ecx
    21. 00A26A22    B2 01           mov dl,1
    22. 00A26A24    A1 784BA200     mov eax,dword ptr ds:[A24B78]
    23. 00A26A29    E8 F297ACFF     call 1.004F0220
    24. 00A26A2E    8B15 0014A400   mov edx,dword ptr ds:[A41400]       ; 1.00A4B4A0
    25. 00A26A34    8902            mov dword ptr ds:[edx],eax
    26. 00A26A36    A1 0014A400     mov eax,dword ptr ds:[A41400]
    27. 00A26A3B    8B00            mov eax,dword ptr ds:[eax]
    28. 00A26A3D    8B10            mov edx,dword ptr ds:[eax]
    29. 00A26A3F    FF92 EC000000   call dword ptr ds:[edx+EC]             ******这个调用可疑****
    30. 00A26A45    83F8 02         cmp eax,2                              *******返回到这里*****
    31. 00A26A48    0F84 5E010000   je 1.00A26BAC
    32. 00A26A4E    A1 0014A400     mov eax,dword ptr ds:[A41400]
    33. 00A26A53    8B00            mov eax,dword ptr ds:[eax]
    复制代码
    重新加载跟踪发现00A26A3F的call就是调用NAG的,尝试几次修改它上面的跳转(如00A269E3处)不成功,直接把00A26A3F给NOP掉——成功进入主界面!在记事本上做好记录,接着来处理软件关闭时的NAG。
         OD加载运行软件后点关闭按钮,出现NAG时同上用F12暂停法定位关键call,堆栈返回后到达009FB15A,如下
    1. 009FB11E    DFE0            fstsw ax
    2. 009FB120    9E              sahf
    3. 009FB121    77 41           ja short 1.009FB164                    *****关键的一个跳转*****
    4. 009FB123    8BCB            mov ecx,ebx
    5. 009FB125    B2 01           mov dl,1
    6. 009FB127    A1 9CAA9F00     mov eax,dword ptr ds:[9FAA9C]
    7. 009FB12C    E8 EF50AFFF     call 1.004F0220
    8. 009FB131    A3 A0B2A400     mov dword ptr ds:[A4B2A0],eax
    9. 009FB136    A1 A0B2A400     mov eax,dword ptr ds:[A4B2A0]
    10. 009FB13B    8B55 F0         mov edx,dword ptr ss:[ebp-10]
    11. 009FB13E    8990 10030000   mov dword ptr ds:[eax+310],edx
    12. 009FB144    8B55 F4         mov edx,dword ptr ss:[ebp-C]
    13. 009FB147    8990 14030000   mov dword ptr ds:[eax+314],edx
    14. 009FB14D    A1 A0B2A400     mov eax,dword ptr ds:[A4B2A0]
    15. 009FB152    8B10            mov edx,dword ptr ds:[eax]
    16. 009FB154    FF92 EC000000   call dword ptr ds:[edx+EC]             ***那这个调用就很可疑了***
    17. 009FB15A    A1 A0B2A400     mov eax,dword ptr ds:[A4B2A0]          ******返回到这里******
    18. 009FB15F    E8 E48EA0FF     call 1.00404048
    19. 009FB164    33C0            xor eax,eax
    20. 009FB166    5A              pop edx
    21. 009FB167    59              pop ecx
    22. 009FB168    59              pop ecx
    23. 009FB169    64:8910         mov dword ptr fs:[eax],edx
    24. 009FB16C    68 81B19F00     push 1.009FB181
    25. 009FB171    8D45 FC         lea eax,dword ptr ss:[ebp-4]
    26. 009FB174    E8 E39DA0FF     call 1.00404F5C
    27. 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的补丁方案和做好的补丁发布如下:
    Webuile文件补丁-playboysen.rar (9.89 KB, 下载次数: 11)

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

    评分

    参与人数 1飘云币 +40 收起 理由
    hj2008mt + 40 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-6-25 14:03:14 | 显示全部楼层
    很好很强大,谢谢楼主
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-6-28 20:27:00 | 显示全部楼层
    谢谢楼主提供这么好的资源啊!我正需要好好研究呢?谢谢楼主了!!!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-6-29 20:20:07 | 显示全部楼层
    感谢楼主提供!!!下载收藏了~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-3 23:07
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2008-6-30 18:34:42 | 显示全部楼层
    方便大家,给个脱壳的
    dumped_.part1.rar (1.88 MB, 下载次数: 27)
    dumped_.part2.rar (1.24 MB, 下载次数: 18)
    楼主的ID让我想起了一个人哈

    [ 本帖最后由 月之精灵 于 2008-6-30 19:36 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2022-2-6 09:25
  • 签到天数: 6 天

    [LV.2]偶尔看看I

     楼主| 发表于 2008-7-1 09:22:57 | 显示全部楼层
    呵呵,想起谁了啊?/:018
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-11-26 22:00
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2008-7-1 22:18:55 | 显示全部楼层
    谢谢。。。又学习了,碰到这种变形壳,新手就没办法了。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-7-6 13:53:31 | 显示全部楼层
    又是变形壳,学习一下.谢谢!
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2022-2-6 09:25
  • 签到天数: 6 天

    [LV.2]偶尔看看I

     楼主| 发表于 2008-7-20 18:22:59 | 显示全部楼层
    原帖由 月之精灵 于 2008-6-30 18:34 发表
    方便大家,给个脱壳的
    33845
    33846
    楼主的ID让我想起了一个人哈



    呵呵,月之精灵干脆好人做到底,顺便把此程序的脱壳过程简单说一下,大家也好对照学习,看看自己到底哪里弄错了哦
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2022-2-6 09:25
  • 签到天数: 6 天

    [LV.2]偶尔看看I

     楼主| 发表于 2008-9-18 10:08:03 | 显示全部楼层
    闲来无事重翻旧账,解决曾经遗留问题......

    手动查找IAT可以成功脱壳
    OEP:0061D618
    RVA:006432F8
    SIZE:00000CEC
    然后点"获取输入表"修复脱壳文件成功!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表