首页
社区
课程
招聘
[分享]手动脱壳Themida加壳的DLL
2008-8-12 18:48 12998

[分享]手动脱壳Themida加壳的DLL

2008-8-12 18:48
12998
【文章标题】: 手动脱壳Themida加壳的DLL
【文章作者】: maikkk
【软件名称】: unpackme.dll
【软件大小】: 1.60M
【下载地址】: 自己搜索下载
【加壳方式】: 未知
【保护方式】: 代码变形,IAT加密
【编写语言】: Microsoft Visual C++ 6.0
【使用工具】: OllyICE,ImportREC_fix,HideToolz,
【操作平台】: XP2
【软件介绍】: AhnLab, Inc
【作者声明】: 处女作.嘎嘎.失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  1.首先查壳:Themida/WinLicense V1.8.X-V1.9.X Other -> Oreans Technologies   * Sign.By.fly * 20080131 *
  OD 载入 ,忽略所有异常,勾选Hide OD的Option Auto Run HideOD,HideNtDebugbit.HideOD,
  再运行HideToolz,打开右上角的Options勾选 Hide process,Protect process,Hide windows,Protect from windows hooks
  Anti-anti debug.隐藏OllyICE进程.清除所有断点包括硬件断点.
  
  1018E014 >  B8 00004C06     mov     eax, 64C0000 -> Themida/WinLicense V1.8.X-V1.9.X Other 入口
  1018E019    60              pushad
  1018E01A    0BC0            or      eax, eax
  1018E01C    74 68           je      short 1018E086
  1018E01E    E8 00000000     call    1018E023
  1018E023    58              pop     eax
  1018E024    05 53000000     add     eax, 53
  1018E029    8038 E9         cmp     byte ptr [eax], 0E9
  1018E02C    75 13           jnz     short 1018E041
  1018E02E    61              popad
  1018E02F    EB 45           jmp     short 1018E076
  1018E031    DB2D 37E01810   fld     tbyte ptr [1018E037]
  
  在unpackme CODE 段下内存写入断点,按F9到下面
  
  1029736B    F3:A4           rep     movs byte ptr es:[edi], byte ptr [esi] ->再按F7+F8运行
  1029736D    C685 512DC106 5>mov     byte ptr [ebp+6C12D51], 56
  10297374    68 396D1FD4     push    D41F6D39
  10297379    FFB5 8522C106   push    dword ptr [ebp+6C12285]
  1029737F    8D85 EED5C406   lea     eax, dword ptr [ebp+6C4D5EE]
  10297385    FFD0            call    eax
  10297387    68 00800000     push    8000
  1029738C    6A 00           push    0
  1029738E    52              push    edx
  1029738F    FFD0            call    eax
  10297391    8BC0            mov     eax, eax
  10297393    83BD A515C106 0>cmp     dword ptr [ebp+6C115A5], 0
  
  再按F9到下面
  
  1029E4FF    2933            sub     dword ptr [ebx], esi ->断在这里,取消内存写入断点
  1029E501    013B            add     dword ptr [ebx], edi
  1029E503    83C1 02         add     ecx, 2
  1029E506    83EA 02         sub     edx, 2
  1029E509  ^ 0F85 65FFFFFF   jnz     1029E474
  1029E50F    83BD B909C106 0>cmp     dword ptr [ebp+6C109B9], 0
  1029E516  ^ 0F85 45FFFFFF   jnz     1029E461
  1029E51C    8BBD 0D1DC106   mov     edi, dword ptr [ebp+6C11D0D] ->选择这里按F4
  1029E522    B9 F86F0000     mov     ecx, 6FF8
  1029E527    32C0            xor     al, al
  1029E529    F3:AA           rep     stos byte ptr es:[edi]
  
  再到CODE段下内存写入断点,按F9到下面,EAX是IAT数组,记录下来,ebx是API地址
  
  102AAC38    8918            mov     dword ptr [eax], ebx                                  ; VERSION.VerQueryValueA
  102AAC3A    8B1C24          mov     ebx, dword ptr [esp]
  102AAC3D    83C4 04         add     esp, 4
  102AAC40    E9 0E000000     jmp     102AAC53
  102AAC45    0342 7A         add     eax, dword ptr [edx+7A]
  102AAC48    DD79 FC         fstsw   word ptr [ecx-4]
  102AAC4B    EC              in      al, dx
  102AAC4C    EB 3D           jmp     short 102AAC8B
  
  然后在ntdll.dll的ZwFreeVirtualMemory 的retn 下断点,同时取消内存写入断点
  
  7C92DA48 >  B8 53000000     mov     eax, 53
  7C92DA4D    BA 0003FE7F     mov     edx, 7FFE0300
  7C92DA52    FF12            call    dword ptr [edx]
  7C92DA54    C2 1000         retn    10 -> 这里下断
  
  按F9后,断在7C92DA54,别取消,再到CODE段下断点.按F9,如此重复几次到达下面OEP
  
  10040787  /.  55            push    ebp
  10040788  |.  8BEC          mov     ebp, esp
  1004078A  |.  53            push    ebx
  1004078B  |.  8B5D 08       mov     ebx, dword ptr [ebp+8]
  1004078E  |.  56            push    esi
  1004078F  |.  8B75 0C       mov     esi, dword ptr [ebp+C]
  10040792  |.  57            push    edi
  10040793  |.  8B7D 10       mov     edi, dword ptr [ebp+10]
  10040796  |.  85F6          test    esi, esi
  10040798  |.  75 09         jnz     short 100407A3
  
  DUMP DLL.

  打开ImportREC_fix在进程列表里选择loaddll.exe,载入后再打开pick dll,选择unpackme.dll 
  
  在OD里面查看记录下来的 IAT地址 ,向上拉发现在1007500开始 到100754C8结束大小4C8
  
  因为是DLL基地址10000000 所以10040787-10000000 = 40787 
  
  输入OEP:40787,RVA:00075000,size:4C8
  
  fix dump
  
  
  
  
  在这多谢论坛各位大大的以往例子  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2008年08月12日 17:41:55

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
点赞0
打赏
分享
最新回复 (15)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
波澜不惊 2008-8-17 09:05
2
0
附件是什么东西啊
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xfvvvv 2008-8-18 07:31
3
0
不太会脱壳。。。
雪    币: 238
活跃值: (51)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yamaha 2008-8-23 01:54
4
0
能用吗?怀疑中
雪    币: 2071
活跃值: (77)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 4 2008-8-27 23:52
5
0
什么东东? 整颗好好的. 没脱啊.
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
波罗王子 2008-8-28 12:15
6
0
楼主真历害,帮我看看那个加PECompact V2.X-> Bitsum Technologies壳的DLL文件怎么脱法
雪    币: 331
活跃值: (56)
能力值: ( LV13,RANK:410 )
在线值:
发帖
回帖
粉丝
Isaiah 10 2008-8-28 20:38
7
0
IAT都不处理了?
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
gsugsu 2008-8-30 15:39
8
0
有个文件Auto.Ex_加的壳是ASPack 2.12 -> Alexey Solodovnikov大家注意这个文件的扩展名,这样的怎么脱壳???请高人赐教
雪    币: 117
活跃值: (15)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
bbinn 2008-9-1 10:42
9
0
学习了
dll的壳我一直都只能依赖现有的脱壳工具,现在知道该怎么脱了.
雪    币: 1379
活跃值: (708)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hmilywen 2008-9-1 13:09
10
0
没IAT加密?不用处理重定位?
雪    币: 196
活跃值: (1023)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
poppig 2 2008-9-2 22:04
11
0

IDA怎么解析不了?还不如直接Dump
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
水月雪 2008-9-2 22:22
12
0
雖然看不懂,但謝謝摟主
雪    币: 204
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kxyyqq 2008-10-17 16:56
13
0
按F9后,断在7C92DA54,别取消,再到CODE段下断点.按F9,如此重复几次到达下面OEP

重复????从哪步开始到哪里结束???

试了几种"重复"都没达到OEP

另外DUMP后修复怎么办
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
planplan 2008-10-19 19:49
14
0
楼主厉害啊,
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jakehqy 2008-10-20 12:31
15
0
无法按部进行。。。。。
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
freyasu 2008-10-21 13:25
16
0
楼主能不能举一个手动脱asprotect的例子啊,谢谢了
游客
登录 | 注册 方可回帖
返回