首页
社区
课程
招聘
[原创]AsPACK v2.11快速脱壳指南
发表于: 2007-2-14 18:05 5000

[原创]AsPACK v2.11快速脱壳指南

2007-2-14 18:05
5000
【破文标题】AsPACK v2.11快速脱壳指南
【破文作者】王猛
【作者邮箱】12985462@QQ.com
【作者主页】www.81mil.cn
【破解工具】OllyDBG
【破解平台】Windows SP2
【软件名称】PYG 5.4 Cracker 小组 课外练习1
【软件大小】174 KB
【原版下载】http://bbs.chinapyg.com/viewthread.php?tid=4772
【保护方式】注册码
【软件简介】PYG Cracker 学习小组课外练习题 一
【破解声明】只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
------------------------------------------------------------------------
【破解过程】

一、查壳分析

利用PEiD可以识别到这个程序使用了AsPack 2.11来加壳。

二、脱壳过程

用OllyDBG加载Crackme1后,停在这里:

0046A001 >  60              PUSHAD                                   ; OllyDBG加载后停在此行
0046A002    E9 3D040000     JMP CRACKME1.0046A444
0046A007    45              INC EBP                                  ; 鼠标选中后,按F4跟到此行。

按照注释部分操作,现在按F4,代码有点变化了:

0046A001 >  60              PUSHAD                                   ; OllyDBG加载后停在此行
0046A002    E9 3D040000     JMP CRACKME1.0046A444
0046A007    E8 24040000     CALL CRACKME1.0046A430                   ; 鼠标选中后,按F4跟到此行。

按快捷键Ctrl+S打开查找命令序列窗口,搜索下面4行特征码:

MOV EAX,1
RETN 0C
PUSH 0
RETN

简单用下面两行估计也可以吧??

PUSH 0
RETN

我们找到了下面的代码:

0046A3AD    B8 01000000     MOV EAX,1                                ; 搜索过来了,要找的4行特征码
0046A3B2    C2 0C00         RETN 0C                                  ; 都在,就这里了!哈哈!!!
0046A3B5    68 00000000     PUSH 0                                   ; 选中本行后按F4,找到OEP地址了:004584F0。
0046A3BA    C3              RETN                                     ; 跳到OEP!(F7或F8到这里都可以)

上翻看看上边的代码,有什么?

0046A3AA    61              POPAD                                    ; 看到POPAD没?快脱了!

选中0046A3B5这一行,按F4跟过去。

0046A3AD    B8 01000000     MOV EAX,1                                ; 搜索过来了,要找的4行特征码
0046A3B2    C2 0C00         RETN 0C                                  ; 都在,就这里了!哈哈!!!
0046A3B5    68 F0844500     PUSH CRACKME1.004584F0                   ; 选中本行后按F4,找到OEP地址了:004584F0。
0046A3BA    C3              RETN                                     ; 跳到OEP!(F7或F8到这里都可以)

注意0046A3B2这行代码,0045844F0就是我们要找的OEP!按F7或者F8往下跟,我们就看到入口了!

004584F0    55              PUSH EBP                                 ; 这里就是真正OEP!
004584F1    8BEC            MOV EBP,ESP
004584F3    83C4 F4         ADD ESP,-0C
004584F6    B8 A0834500     MOV EAX,CRACKME1.004583A0
004584FB    E8 30DAFAFF     CALL CRACKME1.00405F30

三、DUMP和修复

在入口点,利用OllyDUMP插件,我们将程序从内存中DUMP出来,最好不要选择重建输入表,我们一会儿用ImpREC建立。在这里我将DUMP出来的程序命名为crackme1_unpacked.exe。

启动带壳子的crackme1.exe,用ImpREC读取该程序。需要的IAT信息中OEP填入:000584F0,点“自动查找IAT”按钮,当IAT信息读取完成之后,点“修复转储文件”按钮在新打开的对话框中选择crackme1_unpacked.exe,短暂等待之后修复好的文件将命名为 crackme1_unpacked_.exe,脱壳完成!

------------------------------------------------------------------------
【破解总结】脱这个壳子时,千万不要被一开始出现的JMP所迷惑,直接跳到第三行,然后查找特征码就可以秒杀OEP了!
------------------------------------------------------------------------
【版权声明】本文由王猛(www.81mil.cn)原创撰写,转载请注明作者并保持文章的完整, 谢谢!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
AsPack 壳不要在OEP处Dump,当壳将所有区块数据解压出来时,就可Dump,此时输入表、重定位等都没破坏,完全和原文件一样,你所要做的就是找到输入表的位置,修正PE头的输入表地址。
2007-2-14 18:18
0
雪    币: 226
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
"需要的IAT信息中OEP填入:00005F30"
楼主这个00005F30怎么知道的?
2007-2-14 19:18
0
雪    币: 191
活跃值: (58)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
最初由 yumikeyabc 发布
"需要的IAT信息中OEP填入:00005F30"
楼主这个00005F30怎么知道的?


是我的笔误,应该是:000584F0,抱歉!
2007-2-14 20:38
0
雪    币: 191
活跃值: (58)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
最初由 kanxue 发布
AsPack 壳不要在OEP处Dump,当壳将所有区块数据解压出来时,就可Dump,此时输入表、重定位等都没破坏,完全和原文件一样,你所要做的就是找到输入表的位置,修正PE头的输入表地址。


坛主,你说的方法对我来说太复制了。我的能力目前还达不到这种水平,不过还是谢谢老大告诉我这种好方法!
2007-2-14 20:45
0
游客
登录 | 注册 方可回帖
返回
//