首页
社区
课程
招聘
[讨论]各种壳的脱壳办法
发表于: 2011-4-16 20:39 11440

[讨论]各种壳的脱壳办法

2011-4-16 20:39
11440

/*****************脱壳手记************/

/***********由于本人才疏学浅,有什么不足之处,望大家指点********************/
/*
先给自己找些借口:
虽然接触脱壳有很长一段时间了,但是对壳的分析还是处于新手阶段.
详细的脱壳过程也没有必要一再重复,论坛里基本上都有的了.
本文是给一些像我一样在脱壳门口徘徊的新人们看的,其实脱壳很简单.
要是大牛们能留下宝贵的意见当然是求之不得的.
当然 有很多加密壳 像ASProtect , 穿山甲, ACProtect 等. 这些壳,已经有很多前辈给我们这些后人都做好了铺垫,有好多脱该类壳的脚本.
记得VolX写的一个脚本Aspr2.XX_unpacker_v1.0SC.osc
/*
Script written by VolX
Script   : Aspr2.XX_unpacker
版本     : v1.0SC
日期     : 15-Jan-2007
调试环境 : OllyDbg 1.1, ODBGScript 1.47, WINXP, WIN2000
调试选项 : 设置 OllyDbg 忽略所有异常选项 
工具 : OllyDbg, ODBGScript 1.47, Import Reconstructor.
感谢 : Oleh Yuschuk - author of OllyDbg
       SHaG - author of OllyScript
       Epsylon3 - author of ODbgScript
特别感谢 : fly, linex, machenglin 等兄弟的帮忙测试.
//support Asprotect 1.32, 1.33, ,1.35, 1.4, 2.0, 2.1, 2.11, 2.2beta, 2.2, 2.3
*/

这个脚本脱Asprotect很给力 似乎更高级一些的 例如 2.4 的版本也适用.

对于牛壳,比如壳safeguard1.03,我可是费了不少心思,可是总是没有什么结果,在论坛里好像只有一篇文章是有关该壳的
标 题: safeguard1.03 主程序之“游晕惊萝”之浅游(未脱)
发帖人:askformore
时 间: 2005-07-01 16:45 
原文链接:http://bbs.pediy.com/showthread.php?threadid=14854

唉~都不知道要等到何年何月啊 ~

*/

下面是小弟我最近的手记,因为最近才想起来要做手记,所以内容很少很少,希望大家能帮忙补充
2011/4/8  13:40
手脱PECompact 2.x -> Jeremy Collake  壳是我自己加的,加壳的工具是PECompact2 Graphical User Interface Application
软件名:虚拟光驱绿色版
下内存函数断点脱  bpx VirtualFree
单步跟踪也可以    不过要注意凡跑飞的call重新加载后F7进去然后继续单步跟踪即可慢慢到达OEP
有经验的知道该壳加壳后的程序和原程序的入口点是一样的  所以可以在壳的ep下硬件执行断点一样可以到达oep
软件语言:Microsoft Visual C++ 7.0

2011/4/8  17:50
手脱ASPack 2.12 -> Alexey Solodovnikov
软件名:电子日记EDiary2.53
ESP定律解决 
后来想了想,为了方便一些新手学习,就写多一些能脱该累壳的办法,该壳可以使用单步跟踪(其实压缩壳都可以单步跟踪来到OEP的),内存断点,SFX,ESP定律,二进制搜索C2 0C 00 68 00 00 00 00 C3(由于本人才疏学浅,目前发现这段二进制代码对ASPack壳起作用,对于其他壳,还没有留意,也还没有尝试)
软件语言:Borland Delphi 6.0 - 7.0
注:说点题外话,和大学的密码学老师和网络安全老师讨论了一下有关该壳的加密算法和验证密码的方式的时候(当然是在仅有的一些资料的情况下得到的一些些小结论,也不知道是对还是错):该验证算法是建立在SHS杂凑算法(SHA算法的小变形)和Blowfish加密算法的综合利用上的.我听得一头雾水,呵呵.

2011/4/11 12:36
手脱ASPack 2.x (without poly) -> Alexey Solodovnikov
软件名:锐速简历通
开始以为一次ESP定律就可以解决了,一看,OD断下来的时候和刚加载的一样,我马上想到是不是自己操作失误了?本来还想自嘲一下说老马失蹄,但是查看断点,这个软件唯一有点意思的地方是作者使用了两次一样的壳(不知道为什么,老觉得软件作者很会开玩笑),所以再使用一次ESP定律直接到达OEP dump 之后直接能使用 不用import修复
软件语言:Borland Delphi 6.0 - 7.0

2011/04/11 21:30
手脱nSpack V2.3 -> LiuXingPing *
软件名 sms.exe   是自己手动加壳的脱ASPack的壳是一样的 
由于是加密壳所以和
软件语言:Borland Delphi 6.0 - 7.0


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

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
最后那一句"脱ASPack的壳是一样的"是接着 "由于是加密壳所以和"后面的 因为粗心,所以没有留意到,望大家多多包涵啊
2011-4-16 20:42
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
没理由自己的帖要自己挺吧  那也太悲剧了
2011-4-18 23:11
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
俺帮你顶,有空帮俺脱掉那个壳  
http://bbs.pediy.com/showthread.php?t=131684
2011-4-19 00:18
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
刚刚帮  dlnh 脱了个  eXPressor.Protection.V1.7.0.1 -> CGSoftLabs  的壳
本以为是加密壳 可费劲一切脑力寻思着用什么断点才能断下来,查看了fly 的一篇文章:

标 题: eXPressor V1.0脱壳+破解——eXPressor主程序
发帖人:fly
时 间: 2005-02-01 12:20
原文链接:http://bbs.pediy.com/showthread.php?threadid=10640

才知道eXPressor属于压缩壳  不过补知道高级的版本是否改了.
抱着一试的心态采用了内存断点办法  结果  嘻嘻~ 成功了 呵呵
2011-4-19 09:15
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
//想了想 还是说说aspr壳的一些脱壳办法   我是站在巨人的肩膀上说话的,说的话的分量可能不是很重,呵呵  

脱aspr的壳 对于一些第一点版本的 可以使用 int3 和内存访问异常来使得调试的时候能断下来.但是对于现在的aspr的壳来说,我们已经遇到很多很多 没有int3 和内存访问异常的了 .因为aspr壳会用到库函数中的 GetModuleHandleA函数  所以可以下bpx GetModuleHandleA  或者是GetSystemTime 也是可以的

具体可以参考

标 题:ASPR学习笔记上篇:修复IAT
作 者:lelfei
时 间:2009-01-13 17:47:14

链 接:http://bbs.pediy.com/showthread.php?t=80422

这样就可以很轻松的来到OEP 剩下的就是需要修复IAT了
2011-4-20 19:59
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
手脱AHpack 0.1 -> FEUERRADER
建议不要单步跟踪  使用ESP定律能更快到达OEP   SFX方法也可以 不过效率就 呵呵~
2011-4-21 21:50
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
更正一下楼下的那个壳的名字:
!EP(ExE Pack) V1.0 -> 6aHguT & g-l-u-k
附上一个高一点的版本的
上传的附件:
2011-4-21 22:25
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
9
手脱!EP (EXE Pack) 1.4的全过程:
http://bbs.pediy.com/showthread.php?t=132833
2011-4-23 20:29
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
前几天看到  一剑西来  的帖子  才想起来自己没有弄过FSG的壳   回头看了前辈的一篇文章  觉得已经写得非常好了.所以  发上来 呵呵

标 题:FSG 1.33 -> dulek/xt简单分析
作 者:xlyvip
时 间:2009-10-25 22:05:33

链 接:http://bbs.pediy.com/showthread.php?t=100085
2011-4-27 22:40
0
雪    币: 96
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
有点多,期待楼主发更多的,更详细的脱文教程
2011-4-27 23:04
0
雪    币: 1423
活跃值: (977)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
方法很详细,学习了
2011-4-29 13:49
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
FSG2.0的壳  
OD刚载入在此:
00400154 >  8725 EC444100   xchg    dword ptr ds:[4144EC], esp
0040015A    61              popad
0040015B    94              xchg    eax, esp
0040015C    55              push    ebp
0040015D    A4              movs    byte ptr es:[edi], byte ptr ds:[>
0040015E    B6 80           mov     dh, 80
00400160    FF13            call    dword ptr ds:[ebx]
00400162  ^ 73 F9           jnb     short FSG_2_0.0040015D
00400164    33C9            xor     ecx, ecx
00400166    FF13            call    dword ptr ds:[ebx]
00400168    73 16           jnb     short FSG_2_0.00400180
0040016A    33C0            xor     eax, eax
0040016C    FF13            call    dword ptr ds:[ebx]
0040016E    73 1F           jnb     short FSG_2_0.0040018F
00400170    B6 80           mov     dh, 80
00400172    41              inc     ecx
00400173    B0 10           mov     al, 10
00400175    FF13            call    dword ptr ds:[ebx]
00400177    12C0            adc     al, al
00400179  ^ 73 FA           jnb     short FSG_2_0.00400175
0040017B    75 3A           jnz     short FSG_2_0.004001B7
0040017D    AA              stos    byte ptr es:[edi]
0040017E  ^ EB E0           jmp     short FSG_2_0.00400160
00400180    FF53 08         call    dword ptr ds:[ebx+8]
00400183    02F6            add     dh, dh
00400185    83D9 01         sbb     ecx, 1
00400188    75 0E           jnz     short FSG_2_0.00400198
0040018A    FF53 04         call    dword ptr ds:[ebx+4]
0040018D    EB 24           jmp     short FSG_2_0.004001B3
0040018F    AC              lods    byte ptr ds:[esi]
00400190    D1E8            shr     eax, 1
00400192    74 2D           je      short FSG_2_0.004001C1
00400194    13C9            adc     ecx, ecx
00400196    EB 18           jmp     short FSG_2_0.004001B0
00400198    91              xchg    eax, ecx
00400199    48              dec     eax
0040019A    C1E0 08         shl     eax, 8
0040019D    AC              lods    byte ptr ds:[esi]
0040019E    FF53 04         call    dword ptr ds:[ebx+4]
004001A1    3B43 F8         cmp     eax, dword ptr ds:[ebx-8]
004001A4    73 0A           jnb     short FSG_2_0.004001B0
004001A6    80FC 05         cmp     ah, 5
004001A9    73 06           jnb     short FSG_2_0.004001B1
004001AB    83F8 7F         cmp     eax, 7F
004001AE    77 02           ja      short FSG_2_0.004001B2
004001B0    41              inc     ecx
004001B1    41              inc     ecx
004001B2    95              xchg    eax, ebp
004001B3    8BC5            mov     eax, ebp
004001B5    B6 00           mov     dh, 0
004001B7    56              push    esi
004001B8    8BF7            mov     esi, edi
004001BA    2BF0            sub     esi, eax
004001BC    F3:A4           rep     movs byte ptr es:[edi], byte ptr>
004001BE    5E              pop     esi
004001BF  ^ EB 9F           jmp     short FSG_2_0.00400160
004001C1    5E              pop     esi
004001C2    AD              lods    dword ptr ds:[esi]
004001C3    97              xchg    eax, edi
004001C4    AD              lods    dword ptr ds:[esi]
004001C5    50              push    eax
004001C6    FF53 10         call    dword ptr ds:[ebx+10]
004001C9    95              xchg    eax, ebp
004001CA    8B07            mov     eax, dword ptr ds:[edi]
004001CC    40              inc     eax
004001CD  ^ 78 F3           js      short FSG_2_0.004001C2
004001CF    75 03           jnz     short FSG_2_0.004001D4
004001D1    FF63 0C         jmp     dword ptr ds:[ebx+C]   
  //单步跟踪一次,你会发现这里是跳到OEP的 所以  嘻嘻  一载入直接在这里F2 然后F9 在一下F8就到了
004001D4    50              push    eax
004001D5    55              push    ebp
004001D6    FF53 14         call    dword ptr ds:[ebx+14]
004001D9    AB              stos    dword ptr es:[edi]
004001DA  ^ EB EE           jmp     short FSG_2_0.004001CA
//红色代码好像是IAT的 有耐心的可以慢慢跟踪,跟踪的时候留意寄存器的EAX 就可以知道了
004001DC    33C9            xor     ecx, ecx
004001DE    41              inc     ecx
004001DF    FF13            call    dword ptr ds:[ebx]
004001E1    13C9            adc     ecx, ecx
004001E3    FF13            call    dword ptr ds:[ebx]
004001E5  ^ 72 F8           jb      short FSG_2_0.004001DF
004001E7    C3              retn

好了 废话也不多说 呵呵  就这样吧  晚安 各位
2011-5-7 23:39
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
我去研究下  有很多东西都可以用的到
2011-5-8 22:58
0
雪    币: 612
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
leavekwong  大大帮我看看吧。。弄晕我去
http://bbs.pediy.com/showthread.php?t=133845
2011-5-13 15:25
0
雪    币: 178
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
看看这个,谢谢
2011-5-16 20:01
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
17
这里可以帮你解决一些有关脱壳的问题
2011-5-16 21:13
0
游客
登录 | 注册 方可回帖
返回
//