【文章标题】: molebox V4.1290脱壳
【文章作者】: Smoke
【作者邮箱】: 97463448@qq.com
【作者主页】: www.smoke08.com
【作者QQ号】: 97463448
【软件名称】: molebox.exe
【软件大小】: 1.26 MB
【下载地址】:  http://u.115.com/file/f25e456c9
【脱文下载】:  http://u.115.com/file/f263729893
【加壳方式】: molebox
【保护方式】: molebox
【编写语言】: Microsoft Visual C++ 7.0
【使用工具】: OD,LordPE,REC
【操作平台】: Windows Xp Sp3
【软件介绍】: 一款不错的捆绑壳.
【作者声明】: 只是感兴趣,没有其他目的.失误之处敬请各位多多指教!
--------------------------------------------------------------------------------
【详细过程】
  molebox 是一款不错的捆绑壳
  就用molebox V4.1290主程序来进行演示吧
  有不到位的地方还请各位多多指出.
  程序为Microsoft Visual C++ 7.0编写
  就用xp自带的notepad.exe对比吧
  OD载入notepad.exe
  记录:
  010073B4   .  66:8138 4D5A  cmp     word ptr [eax], 5A4D
  010073B9   .  75 1F         jnz     short 010073DA                   ;  010073DA
  010073BB   .  8B48 3C       mov     ecx, dword ptr [eax+3C]
  010073BE   .  03C8          add     ecx, eax
  010073C0   .  8139 50450000 cmp     dword ptr [ecx], 4550
  二进制为:
  66 81 38 4D 5A 75 1F 8B 48 3C 03 C8 81 39 50 45 00 00
  
  载入molebox.exe 
  F9运行  
  Alt+M
  查找二进制 66 81 38 4D 5A 75 1F 8B 48 3C 03 C8 81 39 50 45 00 00
  复制 004F1892  66   f
  来到CPU窗口 跟随表达式 004F1892
  Ctrl+L 来到 
  004F18E0    6A 74           push    74
  004F18E2    68 D0E55600     push    56E5D0
  004F18E7    E8 A4030000     call    004F1C90                         ; 004F1C90
  004F18EC    33DB            xor     ebx, ebx
  004F18EE    895D E0         mov     dword ptr [ebp-20], ebx
  004F18F1    53              push    ebx
  004F18F2    8B3D 90C25100   mov     edi, dword ptr [51C290]          ; kernel32.GetModuleHandleA
  004F18F8    FFD7            call    edi
  004F18FA    66:8138 4D5A    cmp     word ptr [eax], 5A4D
  004F18FF    75 1F           jnz     short 004F1920                   ; 004F1920
  004F1901    8B48 3C         mov     ecx, dword ptr [eax+3C]
  004F1904    03C8            add     ecx, eax
  004F1906    8139 50450000   cmp     dword ptr [ecx], 4550
  
  在 004F18E0    6A 74           push    74  //下硬件执行断点
  
  OD重载  F9运行 看IAT 似乎没加密 
  
  但是前人提到了IAT除了以下几个,全部有效:
  004F1652   - FF25 90CC5100      jmp dword ptr ds:[51CC90]
  004F1658   - FF25 A0CC5100      jmp dword ptr ds:[51CCA0]
  004F165E   - FF25 94CC5100      jmp dword ptr ds:[51CC94]
  004F1664   - FF25 98CC5100      jmp dword ptr ds:[51CC98]
  004F166A   - FF25 9CCC5100      jmp dword ptr ds:[51CC9C]
  
  跟随表达式到 004F1652
  
  数据窗口来到00E35010 往上拉 来到 00E30000  发现是一个PE文件 应该是捆绑的dll文件
  
  现在还不能dump出来.因为文件已经被初始化了... 记录 DLL基址:00E30000
  
  00E30000  4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00  MZ?........
  00E30010  B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00  ?......@.......
  00E30020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  00E30030  00 00 00 00 00 00 00 00 00 00 00 00 10 01 00 00  ..............
  00E30040  0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68  ?.???L?Th
  00E30050  69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F  is program canno
  00E30060  74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20  t be run in DOS
  00E30070  6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 00  mode....$.......
  
  
  重载程序,下 bp VirtualAlloc 末尾下断
  
  观察寄存器窗口的EAX 
  
  见到申请00E30000后,下内存写入断点,F9
  
  来到
  00AF70F5    8807               mov     byte ptr [edi], al
  00AF70F7    46                 inc     esi
  00AF70F8    47                 inc     edi
  00AF70F9    49                 dec     ecx
  00AF70FA  ^ 75 F7              jnz     short 00AF70F3
  
  删除内存写入断点
  
  发现是循环填充 在 00AF70FC    59                 pop     ecx  //F4过来
  
  F8单步走 00B03477    56                 push    esi  //F4
  
  这个时候提取这个数据 为 molebox1.dll
  
  由于是按照区段来进行解码,所以用 LordPE 来修改区段信息
  
  把文件块对齐修改为 00001000  文件头大小修改为 00001000  保存
  
  区段表 
  
  .text   虚拟地址 00001000   虚拟大小 00010000  原始偏移 00001000  原始大小  00010000
  .expo   虚拟地址 00011000   虚拟大小 00001000  原始偏移 00011000  原始大小  00001000
  .reloc  虚拟地址 00012000   虚拟大小 00001000  原始偏移 00012000  原始大小  00001000
  
  导出表
  
  文件名为 masterli.dll  把  molebox1.dll  重命名为  masterli.dll
  
  重载程序 Shift+F9 来到oep 
  
  手工写代码载入masterli.dll
  
  撤销所写入的代码 还原EIP
  
  
  来到 004F1652
  
  004F1652  - FF25 90CC5100      jmp     dword ptr [51CC90]
  
  调用的还是原来的地址 修改为载入的地址
  
  
  004F1652
  偏移00E35010
  改成10005010
  
  004F1658 
  偏移00E37BC0
  改成10007BC0
  
  004F165E 
  偏移00E37A20
  改成10007A20
  
  004F1664 
  偏移00E37110
  改成10007110
  
  004F166A 
  偏移00E36020
  改成10006020
  
  来到oep
  
  LordPE 修正映像大小  完全脱壳
  
  ImportREC 修正转储
  
  保存完之后 运行程序 发现字符串都是 notfound
  
  那是因为缺少data文件夹下的 .messages   about.htm   activate.htm  ultra.png
  
  我就提下 about.htm  ultra.png 这两个文件的提取吧
  
  在目录下新建一个data文件夹  建一个 about.htm 
  
  OD运行原版 molebox.exe
  
  点击上方 Help   About
  
  看到有个图片 搜索 图片文件 .png
  
  00BBC041                    00 3C 43 45 4E 54 45 52 3E 0D        <CENTER>.
  00BBC051  0A 3C 69 6D 67 20 73 72 63 3D 22 75 6C 74 72 61  .<img src="ultra
  00BBC061  2E 70 6E 67 22 20 62 6F 72 64 65 72 3D 30 3E 3C  .png" border=0><
  00BBC071  62 72 3E 0D 0A 3C 66 6F 6E 74 20 73 69 7A 65 3D  br>..<font size=
  00BBC081  2B 31 3E 3C 62 3E 54 65 67 67 6F 20 4D 6F 6C 65  +1><b>Teggo Mole
  00BBC091  42 6F 78 3C 2F 62 3E 20 3C 53 55 50 3E 3C 69 3E  Box</b> <SUP><i>
  00BBC0A1  55 4C 54 52 41 3C 2F 69 3E 3C 2F 53 55 50 3E 3C  ULTRA</i></SUP><
  00BBC0B1  2F 66 6F 6E 74 3E 3C 62 72 3E 0D 0A 43 6F 70 79  /font><br>..Copy
  00BBC0C1  72 69 67 68 74 20 28 43 29 20 32 30 30 32 2D 32  right (C) 2002-2
  00BBC0D1  30 30 39 2C 20 54 65 67 67 6F 20 53 6F 66 74 77  009, Teggo Softw
  00BBC0E1  61 72 65 20 4C 74 64 2E 3C 62 72 3E 0D 0A 3C 66  are Ltd.<br>..<f
  00BBC0F1  6F 6E 74 20 73 69 7A 65 3D 2D 31 3E 56 65 72 73  ont size=-1>Vers
  00BBC101  69 6F 6E 20 25 50 52 4F 47 52 41 4D 56 45 52 53  ion %PROGRAMVERS
  00BBC111  49 4F 4E 25 3C 2F 66 6F 6E 74 3E 3C 62 72 3E 0D  ION%</font><br>.
  00BBC121  0A 3C 62 72 3E 0D 0A 25 50 52 4F 47 52 41 4D 4C  .<br>..%PROGRAML
  00BBC131  49 43 45 4E 53 45 25 0D 0A 3C 62 72 3E 0D 0A 3C  ICENSE%..<br>..<
  00BBC141  2F 43 45 4E 54 45 52 3E                          /CENTER>
  
  
  
  
  <CENTER>
  <img src="ultra.png" border=0><br>
  <font size=+1><b>Teggo MoleBox</b> <SUP><i>ULTRA</i></SUP></font><br>
  Copyright (C) 2002-2009, Teggo Software Ltd.<br>
  <font size=-1>Version %PROGRAMVERSION%</font><br>
  <br>
  %PROGRAMLICENSE%
  <br>
  </CENTER>
  
  
  
  png文件特征码:89 50 4E 47
  
  00BC8054   00BC98DC 
  
  新建 ultra.png 将代码粘贴 保存即可
  
  
  OEP地址:004F18E0
  
  DLL名称:masterli.dll
  
  DLL基址:00E30000
  
  新DLL基址:10000000
  
  就到这里吧.眼睛看花了.o(∩_∩)o 
  
  
--------------------------------------------------------------------------------
【版权声明】: 本文由Smoke所写.感谢前人留下的知识...(*^__^*)

                                                       2011年03月22日