首页
社区
课程
招聘
[原创]Safengine Shielden2.00全保护脱壳总结
发表于: 2011-2-20 02:59 58184

[原创]Safengine Shielden2.00全保护脱壳总结

2011-2-20 02:59
58184
【文章标题】:Safengine Shielden2.00全保护脱壳总结 (delphi_cm)
【文章作者】: justhxy
【作者邮箱】: justhxy@126.com
【作者主页】: http://hi.baidu.com/justhxy
【作者QQ号】: 798489503
【软件名称】: delphi crackme
【下载地址】: 自己搜索下载
【保护方式】: shielden 2.00
【编写语言】: delphi
【使用工具】: od+sod+loadpe+impr
【操作平台】: Win Xp
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】

1,菜鸟学习而已,没有它意
2,用se官方的话是:入门级加密
3,2.03版用同样的方法也可以的,但是有些东西还是自己去总结的好
4,nooby牛很强悍,很努力,每次更新难度都提升一截,感谢他创造了公认的最好的壳(ps:最讨厌比自己厉害却比自己还努力的人了,5555)

主要内容:绕过调试检测 + iat修复 +anti_anti_dump

调试过shielden或者se的都知道现在的新版有个功能叫做“动态自校验”,该功能直接导致的问题就是补丁无法生效。
所以,要破解sheilden保护的程序只有3种办法,要么把线程去掉,要么把校验值改掉,要么脱壳,前2个方式我反正没测试,感觉会很麻烦,而且你想啊:指不定有多少暗桩等着我们呢(nooby的东西怎么可能会那么简单呀),而脱壳就不一样了,脱完就可以想干啥就干啥了~~

首先,我们来看一下我选择的选项(和保护有关的全都选上)







反调试部分:
这个不多说,任一款od+sod就可以过Shielden的反调试了,不过如果你的od过不了,你可以考虑下下面几个方面:
1,od的界面方案
2,ctrl+f2
3,NtSetInformationThread
4,sod的配置项里的password和隐藏进程

在shielden2.00的版本主要靠sexx.tmp,所以只要你能把这里处理掉就剩下的基本就可以无视啦(我原本打算把这个文件dump出来看看代码的,后来被代码恶心的要命,不了了之,唉)

如果还过不了调试器检测,那就不要玩了.....

一、快速到达oep附近:
为什么要到oep附近而不是oep?一是因为在oep附近的时候,已经初始化完成,而我们要dump的只是初始化状态没有改变的时候,二是oep的第一个字节被偷了,在oep是停不下的,至于是在oep之前还是之后,都没有问题的,你怎么方便怎么来就是了

不要试图下GetModuleHandleA到oep附近了,不会断下的,恩,原理看完这篇文章后你会懂的,如果你认真思考了的话

如果什么都不处理的话,那用od+sod组合是无法下硬件断点和内存断点的,而普通断点只要找到合适的时机下断就不会被anti到了,所以我们只下普通断点

而时机的选择,这个是需要人肉的,至于怎么人肉,大牛有大牛的办法,我这菜鸟就采取了一直f7的办法,在这里给大家提供个一个复杂度为254的特征码
8A 02 88 01 41 42

具体的步骤为:
对VirtualProtect下断点,记录弹出错误时的次数n,然后在第n-1次的时候停下
    (这一步也许可以去掉,我认为这样做也许可以在不被检测到的情况下离oep近一些,是也许啊,是否正确你自己试吧,反正我是懒的重新跑脚本分析了,分析那代码有多么烦你懂的)
查找特征码所在地址,下个f2断点
F9
下面的步骤要分2种情况,第一种情况是你已经提前找到了oep的位置,那直接对oep下面的第二行代码下断,f9就可以顺利到了oep了,如果你不知到oep的位置,那就按下面的方式操作。

停下后,alt+m,到内存窗口,搜索特征码“8BFF558BEC837D080074??FF7508E8????????85C074??FF7004E8????????5DC2040064A1180000008B40308B4008EB”
对所有搜索到的地址下断,然后f9
单步几次,等到返回到代码段的时候,如果你熟悉各种语言oep的特征,就会发现已经到了oep附近了(如果没有到,就反复几次,总有一次会到的)
Oep,新建eip
进入第二个阶段,准备修复iat

修复iat:
我觉得iat加密的方式是个亮点,很好很好很好,因为我单步跟了好久好久好久好久好久,痛苦啊,5555555555
首先要找api调用的call,这些call的立即数都在壳段,所以很好找到啦
然后就是找真正的api。
还是来个特征码吧(254复杂度的时候):
97 8B 55 0C

搜索到这个地址后,f2断点,f9,当程序停下来的时候,你就会发现真正的api函数了,剩下的该怎么办就不用我说了吧

修完之后用uif处理下,dump,import修复下输入表,这个时候就算是脱壳完成了,剩下的是要处理anti-dump。

Anti-dump:
Nooby牛不屑于用修改镜像大小这个anti,唉,我们这些菜鸟就惨了~~
Shielden的anti-dump是处理了PointerToSymbolTable和NumberOfSymbols和ResourceTableaddress 和ResourceTablesize ,前两个清零,后两个修改为正确的就可以了

至此,脱壳完成。

附注:
一,对于delphi程序,多数还是可以直接生搬硬套这个步骤的
二,对于其他语言编译的程序就不能直接套用了,你需要先明白原理,然后稍微改下就可以了
三,如果全都操作无误的话,有些时候,iat的call最好是检查一遍
四,有些地方我没有写具体的操作步骤,但是我觉得那都是基础的东西,不知道怎么操作的兄弟我建议你还是先去巩固一下基础吧,不然换种方式你又不会脱了,真的是为你好,不要骂我。
四,想喷我的朋友,如果你不曾写过一篇文章不曾给过论坛做过任何贡献,请你无视我,我没逼你看
五,其实很想写一款查safengine具体的的保护方式的工具,不知道有没有时间,关键是想想那各不相同的特征就头疼。。。。

欢迎大家批评指正,欢迎大家找我交流,QQ:798489503   Email:justhxy@126.com   谢谢

---------------------------------------------------------------------------------------
【版权声明】: 本文原创于justhxy, 转载请注明作者并保持文章的完整, 谢谢!

                                                 2011年02月20日 1:23:23

[课程]Android-CTF解题方法汇总!

上传的附件:
  • 1.jpg (50.98kb,2036次下载)
  • 2.jpg (62.49kb,2028次下载)
  • 3.jpg (71.98kb,2028次下载)
收藏
免费 7
支持
分享
最新回复 (27)
雪    币: 889
活跃值: (4027)
能力值: ( LV5,RANK:69 )
在线值:
发帖
回帖
粉丝
2
过不了反调试的路过
2011-2-20 08:26
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不会脱壳的路过
2011-2-20 08:35
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我的OD运行不了
2011-2-20 09:56
0
雪    币: 40
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
原理都不说下 就知道下那个函数断点
2011-2-20 17:07
0
雪    币: 1534
活跃值: (738)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
6
哥们我以前也有这个疑问,完整的跟几种强度不太高的壳你就明白了。
2011-2-20 17:35
0
雪    币: 576
活跃值: (1163)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
7
学不到真正的东西。。。
2011-2-20 18:06
0
雪    币: 347
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
SE的文章不多,感谢分享
2011-2-20 18:23
0
雪    币: 333
活跃值: (46)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
9
为什么如此说?关键的地方都已经列出来了,仿这过程走就可以知道我是怎么想的,脱壳都是一个主线,se也不例外,怎么叫学不到呢?

难道解释每一句代码写清楚每一步操作才行?脱壳的帖子那么多,至少我认为学会脱壳思路比学会针对某个壳的方法要更好一些.....
2011-2-20 18:30
0
雪    币: 576
活跃值: (1163)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
10
我想学到的东西包括:

1. 如何处理代码乱序变形以及垃圾代码,这个是壳保护自己的手段(我感觉是唯一的手段)
  猥琐指的就是这个。。

2. VM虚拟机是如何设计的,如何识别出整个虚拟机的结构,以及如何还原VM代码

3. 在前面这两大点处理完毕后,接下来就是外壳的整个流程,包括各种Anti-dump, Anti-Debug的方法,如何处理IAT等等....

只有真正的讲解这三大点的文章才是真正对学习外壳有帮助的文章。。

至于你的文章:

能利用的东西,可能就是你说的如何下断点等,这个起到的作用就是可以快速的到达一些关键的处理代码的地方。。但是外壳稍微做下改变,也即不同的版本,很多时候也是用不了。
还有就是你说的那些ANTI的方法,可以起到指示的作用。。

可能对别人有帮助吧。。我是真的没学到什么,估计那些ANTI的方法函数名,会让我去查相关的资料。。

ps: 不好意思。。这只是我个人的看法而已。。
2011-2-20 20:49
0
雪    币: 210
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我知道写东西很累,不过还是希望大牛能在一个什么都不懂的菜鸟角度写出来,让我们能更容易看懂些
2011-2-20 21:23
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
说学不到东西的人,是自己没去实际接触过,一看只列出过程就说不详细,
你知道吗?很多时候,就是一个小细节也把你拖住很久,如果这个时候有人
给你一个关键的提示,哪怕就10来个字的描述,就可以帮你顺利过关
2011-2-20 22:04
0
雪    币: 282
活跃值: (32)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
毕竟这个壳分析的人不多,过来支持,也看看能不能看懂。
SE确实是强大。
2011-2-23 00:32
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
14
如果只是想调试 Target, 可在程序run起来后
在 Threads列表窗口, 按一下 Data Block 栏位, 使之由小到大排序
此时你可由小到大删掉那7'8个 Thread
应可像在调试普通程序一样下断.
2011-2-25 18:38
0
雪    币: 2882
活跃值: (1245)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjd
15
记下来了谢谢!
2011-2-28 23:07
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
16
主Thread还是会在某些处anti调试的
所以只删多余的Thread, 用处并不大
可能操作一下就挂了
2011-3-1 00:34
0
雪    币: 2882
活跃值: (1245)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yjd
17
现在sod带壳运行是经常挂

其实碰到se壳大部分情况下是shift+del

运气好碰到没加好的可以带壳调下
2011-3-1 01:02
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
Safeengine shielden is nice protector and maybe can be classified as one of the best protector, besides ZProtect, VProtect, VMProtect or TMD/WL. To the author its protector keep your nice works hard and never boring to improve it. Ok
2011-3-6 20:06
0
雪    币: 245
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
Nice works fal!
2011-3-15 16:07
0
雪    币: 204
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
Nooby看了肯定跟你急
2011-3-18 00:06
0
雪    币: 205
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
虚拟机限制过不去啊
2011-6-15 03:28
0
雪    币: 337
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
迷惑,如何定位OEP附近?
2011-9-9 09:51
0
雪    币: 465
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
记下来了谢谢!
2012-3-30 23:07
0
雪    币: 192
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
过不了检测的路过
2012-7-17 18:30
0
雪    币: 1579
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
楼主好厉害,有没有把你这个脱壳的联系做个视频教程,这样我等小辈可以更好的学习。谢谢前辈们能慷慨分享,SE的壳真的不会脱,反调试不会,附加后又不知从何做起。
2012-7-17 20:29
0
游客
登录 | 注册 方可回帖
返回
//