吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 75692|回复: 189
收起左侧

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

    [复制链接]
nevsayno 发表于 2011-2-20 02:01
本帖最后由 nevsayno 于 2013-1-14 18:23 编辑

【文章标题】:Safengine Shielden2.00全保护脱壳总结 (delphi_cm

【软件名称】: delphi crackme
【下载地址】: 自己搜索下载
【保护方式】: shielden 2.00
【编写语言】: delphi
【使用工具】: od+sod+loadpe+impr
【操作平台】: Win Xp
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
1,菜鸟学习而已,没有它意
2,用se官方的话是:入门级加密
32.03版用同样的方法也可以的,但是有些东西还是自己去总结的好
4nooby牛很强悍,很努力,每次更新难度都提升一截,感谢他创造了公认的最好的壳(ps:最讨厌比自己厉害却比自己还努力的人了,5555


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


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

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


3.jpg
2.jpg
1.jpg


反调试部分:
这个不多说,任一款od+sod就可以过Shielden的反调试了,不过如果你的od过不了,你可以考虑下下面几个方面:
1od的界面方案
2ctrl+f2
3NtSetInformationThread
4sod的配置项里的password和隐藏进程
shielden2.00的版本主要靠sexx.tmp,所以只要你能把这里处理掉就剩下的基本就可以无视啦(我原本打算把这个文件dump出来看看代码的,后来被代码恶心的要命,不了了之,唉)
如果还过不了调试器检测,那就不要玩了.....


一、快速到达oep附近:
为什么要到oep附近而不是oep?一是因为在oep附近的时候,已经初始化完成,而我们要dump的只是初始化状态没有改变的时候,二是oep的第一个字节被偷了,在oep是停不下的,至于是在oep之前还是之后,都没有问题的,你怎么方便怎么来就是了
不要试图下GetModuleHandleAoep附近了,不会断下的,恩,原理看完这篇文章后你会懂的,如果你认真思考了的话
如果什么都不处理的话,那用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处理下,dumpimport修复下输入表,这个时候就算是脱壳完成了,剩下的是要处理anti-dump


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

至此,脱壳完成。

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


欢迎大家批评指正,欢迎大家找我交流,QQ请不要留下qq号   Emailjusthxy@126.com   谢谢
---------------------------------------------------------------------------------------
【版权声明】: 本文原创于justhxy, 转载请注明作者并保持文章的完整, 谢谢!
                                                 201102201:23:23

免费评分

参与人数 11热心值 +11 收起 理由
781732825 + 1 我很赞同!
吾爱扣扣 + 1 膜拜大神!收藏了!
脚本小子 + 1 我很赞同!
ak47tt1 + 1 不错
木子哥 + 1 希望多多看到对付SE壳的办法啊 实在太少了 .
tysan + 1 精彩~
zone0826 + 1 我望眼欲穿,等的就是你。
小糊涂虫 + 1 我很赞同!
missviola + 1 精品文章!
b2356967 + 1 PointerToSymbolTable和NumberOfSymbols和R.
yjd333 + 1 这么好的文章不顶不行

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yjd333 发表于 2011-2-20 02:52
第一次看到针对se的,学习来了
nocai 发表于 2011-2-20 07:26
b2356967 发表于 2011-2-20 08:16
本帖最后由 b2356967 于 2011-2-20 08:17 编辑

终于有人公布了,先回复后学习!
sixid 发表于 2011-2-20 08:32
有点忙没时间看,这东西很有用,太好了
e.skyendy 发表于 2011-2-20 10:33
哇,是不是可以去领那10万奖金?
Kiζs~乄 发表于 2011-2-20 11:16
太强了  高人啊
妖精的旋律 发表于 2011-2-20 11:37
留名... 脱SE 第一次看
小糊涂虫 发表于 2011-2-20 11:40
膜拜楼主~~~
zhaobo891 发表于 2011-2-20 12:23
貌似现在SE壳是主流啊,这个帖子真是及时雨啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-18 03:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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