首页
社区
课程
招聘
[原创]Shielden2.04主程序脱壳分析
发表于: 2011-3-14 00:22 15341

[原创]Shielden2.04主程序脱壳分析

2011-3-14 00:22
15341

编辑一下 怎么变成求职格式了
Shielden主程序使用Safengine NetLicensor v2.0.4.0保护.以下分析可能对SE其他版本也同理.

1.Anti:
S兄贴了篇Bypass anti分析,原理很透彻了.我补充一下.有点啰嗦,大侠们请跳过.
  SE反调试的几个选项全部是ANTI,可以直接干掉线程,我看了一下主程序,后面也没发现会出问题,当然我没有完整的加一次壳来测试,加壳过程会不会出问题,也无法保证.一开始的时候可以改CreateThread,直接返回,到OEP的时候再取消修改,否则程序里的线程也无法创建.比如Shielden主程序拖放试练品进入而创建的PE分析线程.如果不取消,将会看到Shielden界面灰色没反应.
  干掉诸如检测REGMON等等线程后,主线程里依然有不少ANTI.体现在对DRX的积极检测.壳会检测TlsValue与DR0~DR3之和是否相当,会mov r32,[r32]通过设置r32为DRX来构造80000004异常,S兄的文章提到过了.当发现不相等或是没出异常,那么壳就获知当前状态为被调试.对第一条S兄采取的办法是在GetThreadContext的时候清掉DRX,并清掉TlsValue.对第二条则自己构造了一个异常.实际上壳在许多地方会进行第二条比较,比较的地址也不同,所以S兄给出的方法可以顺利到达OEP.但是一旦断下之后,在诸如IAT调用之类的与壳通信的地方,又会被壳检测到.因为可能这里出现了另外一条mov r32,[r32].而且r32是随机的,不同试练品里不同.DR0~DR3这4个DWORD,不同的试练品也是不同的.
  解决办法有两个:
1>.OD在F2下断并断下的时候,会无情的清掉DRX.所以还是改改OD这个执拗习惯吧.
修改OD:

<0042EA22>

  mov ecx,dword ptr ds:[4D8D70]
  mov esi,400
  mov eax,dword ptr ds:[4D8D8C]
  xor eax,eax
  mov edx,dword ptr ds:[4D8DA8]
  mov edx,4D8D78
  mov ecx,dword ptr ds:[4D8DC4]
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
<0042EA22>
  jmp 004AF645

<004AF645>

  pushfd
  cmp dword ptr ds:[4D8D70],0
  jnz @L00000001
  cmp dword ptr ds:[4D8D8C],0
  jnz @L00000001
  cmp dword ptr ds:[4D8DA8],0
  jnz @L00000001
  cmp dword ptr ds:[4D8DC4],0
  jnz @L00000001
  mov ecx,dword ptr ds:[4D8D70]
  mov esi,400
  mov eax,dword ptr ds:[4D8D8C]
  xor eax,eax
  mov edx,dword ptr ds:[4D8DA8]
  mov edx,4D8D78
  mov ecx,dword ptr ds:[4D8DC4]
  jmp @L00000002

@L00000001:
  mov ecx,dword ptr ds:[4D8D70]
  mov esi,400
  mov dword ptr ds:[ebx+4],ecx
  mov eax,dword ptr ds:[4D8D8C]
  mov dword ptr ds:[ebx+8],eax
  xor eax,eax
  mov edx,dword ptr ds:[4D8DA8]
  mov dword ptr ds:[ebx+C],edx
  mov edx,4D8D78
  mov ecx,dword ptr ds:[4D8DC4]
  mov dword ptr ds:[ebx+10],ecx

@L00000002:
  popfd
  jmp 0042EA51
9C810C24000100009D0F31
push api
pushfd
inc [esp+8] ;6字节的调用有这句,5字节的则没有
popfd
retn
006D41A3    E8 0F000000     call 006D41B7                            ; 006D41B7
006D41A8    90              nop
006D41A9    90              nop
006D41AA    90              nop
006D41AB    90              nop
006D41AC    8B0D A8416D00   mov ecx,dword ptr [6D41A8]
0075F52C    E8 AFCFF9FF     call 006FC4E0                            ; 006FC4E0
0073F1BC    FF56 8B         call dword ptr [esi-75]
0073F1BF    90              nop
0073F1C0    8B06            mov eax,dword ptr [esi]
0073F1C2    5E              pop esi
0073F1C3    E8 39D1FBFF     call 006FC301                            ; 006FC301
0073F1C8    8BF8            mov edi,eax
0073F1CA    3B3E            cmp edi,dword ptr [esi]
0073F1CC    74 3F           je short 0073F20D                        ; 0073F20D
0050852E > $  E8 4D950000   call 00511A80                            ;  00511A80

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (11)
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
很好,进来顶一下
2011-3-14 00:51
0
雪    币: 3800
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
今天刚转正,就看见牛贴了,虽然本人水平差,还不太明白!
2011-3-14 01:00
0
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
看看,学习下,这壳可不是一般的牛啊
2011-3-14 02:50
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
5
膜拜忧郁眼神喵
变成求职格式是这里的Bug也是特点

所以S兄给出的方法可以顺利到达OEP.但是一旦断下之后,在诸如IAT调用之类的与壳通信的地方,
又会被壳检测到.因为可能这里出现了另外一条 mov r32,[r32].而且r32是随机的,


喔,作者改进了. 我那个范例在按钮事件的 GetWindowTextA 还是用那4个DRx
因我当时对 DRx 的改法是想顾到让我们自己设的硬断随时都是清醒有效的,而不用借 F2 软断来唤醒.

壳会把无壳试练品中用到的DLL,都放到加壳后的程序里,并挑几个API列进来


会不会是为了相容程序使用到具有 TLS 的 DLL ?
2011-3-14 08:07
0
雪    币: 291
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
坐在精华下面就是舒服~ 膜拜 Kissy ....
2011-3-14 09:14
0
雪    币: 2882
活跃值: (1279)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjd
7
都是牛人。我来凑人数
2011-3-14 10:17
0
雪    币: 544
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
只能膜拜,无法学习。。。
2011-3-14 10:19
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
Thanks to KunKun and Kissy. For Kissy, its nic your work again fals after the unpacking Enigma v1.76, or etc. Good Luck !
2011-3-16 17:43
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主分析很少详尽
不能不顶
2011-3-17 17:05
0
雪    币: 3856
活跃值: (2372)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
来看一下了啊
2011-3-24 20:56
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
强帖,支持
2011-3-25 22:25
0
游客
登录 | 注册 方可回帖
返回
//