脱壳_00_压缩壳_ASPACK
写在前面的话:
Aspack是最常见的一种压缩壳,具有较好的兼容性、压缩率和稳定性,今天我们就来一起分析一下这个壳;
零、分析压缩壳:
0、在开始动态调试前,用PEID和LoadPE查看一些信息,做到心中有数;





1、了解了基本的信息后,我们将文件拖到调试器中,进行分析;
分析之前,要明确以下几点,这也是我们的目的(分析时,该做些什么);
I). 找到原始OEP
II). dump文件;
III). 如果需要修复文件,则进行修复,一般IAT;
IV). 如果程序仍然无法运行,去掉脱壳后的随机基址,再次尝试;
V). 如果仍然有问题,单步跟踪;
程序入口点处,有个pushad,根据这个,其实可以知道,这个PE文件,8成加过壳了

第一步,找OEP;
遇到这种pushad/pushfd之类的,我们寻找OEP的方法就是ESP定律,有pushad,就一定会有popad,那就会访问到pushad后ESP的位置;
因此,首先单步运行(F7),在ESP地址处,下断【硬件访问】

下完断点后,F9运行程序,会在我们下断点的位置处触发断点:

说明壳的代码,基本执行完毕了,接下来,就单步,顺利的话,一般会有些jmp,跳转到未加壳之前PE的OEP处,这里,就需要
我们对程序的OEP处的敏感信息有所警惕了,什么样的程序,OEP都有什么样的特征,这样也可以帮助我们对OEP的判断;

单步几次后,程序跳转到这个位置,注意下:
A) 地址010F11D2,跳转之前的地址约么在01107425,有些跨度,要注意了;
B) call xxx; jmp xxx,典型的VS编译的程序的特征,加上PEID查看到的链接器版本12.0,初步推断,是VS2013编译的;
为了进一步验证我们的推断,看下CALL里的内容

到这里,找到了证据,因此,我们认为,这个位置,就是原程序的OEP;
在开始dump之前,看下它的IAT信息,结合刚刚call中的函数,调试器已经正确的标识出了函数名,其实,我们可以猜想,这个壳
对IAT并没有做加密操作;【附录:FF 15 表示的call,就是在call IAT表,call后就是IAT地址,正常的call是E8】


我们可以看到,IAT表里存放的就是真实的函数地址,并没有加密,因此,我们可以开始dump了;
附录:如果地址显示是16进制,需要转为地址格式,进行查看:

第二步,dump(x32dbg的dump和OD不同,OD的就不再介绍了,在32dbbg里,用到了一个插件Scylla)
PS:看到这个插件,不禁想起了大学时光,那些年我们都在越狱;


脱壳完成了,能运行吗,尝试下:

无法运行,根据最初我们的步骤,猜测是重定位导致的问题,先把随机基址去掉,重新运行下:

修改40为00

保存后,重新运行:

成功,说明确实是随机基址导致的问题,因此,为了完美解决问题,我们需要修复重定位表;
第三步,修复重定位



其实到这一步,我们已经结束了,既然知道了重定位表的地址,便可以知道原PE文件的RVA和Size,拖到loadpe中修改就行了,
至于说那个搞破坏的那部分代码,不用管它,因为OEP改变后,壳的那部分代码已经不执行了,还有什么必要去修改它呢;

保存后,我们再运行下,看看:

至此,脱壳成功;
一、ASPACK压缩壳特点:
0. 并未加密IAT,可在x32dbg中,Scylla进行修复;
1. 只需要找到重定位的RVA和大小就行了;不用理会壳自身对重定位的改动;
2. 可以利用ESP定律定位到OEP;
结语:整体来看,在脱壳的时候,虽说是压缩壳,但是,只要找到那几个关键的步骤点,我们是没有必要去搞懂具体是怎么压缩的;
因为,压缩千变万化,当然,如果想练习下阅读汇编的能力,是推荐读者找个壳,自己仔细单步分析下的;
脱壳_00_压缩壳_ASPACK的更多相关文章
- UPX和WinUpack压缩壳的使用和脱法 - 脱壳篇06
UPX和WinUpack压缩壳的使用和脱法 - 脱壳篇06 让编程改变世界 Change the world by program 今天小甲鱼给大家介绍两款压缩壳:UPX和WinUpack. UPX是 ...
- FSG压缩壳和ImportREC的使用 - 脱壳篇05
FSG压缩壳和ImportREC的使用 - 脱壳篇05 让编程改变世界 Change the world by program FSG这个壳可以说是有点儿不守妇道,尼玛你说你一个压缩壳就实现压缩功能得 ...
- 脱壳第三讲,UPX压缩壳,以及补充壳知识
脱壳第三讲,UPX压缩壳,以及补充壳知识 一丶什么是压缩壳.以及壳的原理 在理解什么是压缩壳的时候,我们先了解一下什么是壳 1.什么是壳 壳可以简单理解为就是在自己的PE文件中包含了代码.而有不影响我 ...
- 手工脱壳之FSG压缩壳-IAT表修复
目录 一.工具及壳介绍 二.脱壳 2.1.单步跟踪脱壳 2.2.IAT修复 三.程序脱壳后运行截图 四.个人总结 五.附件 一.工具及壳介绍 使用工具:Ollydbg.PEID.ImportREC.L ...
- 深入底层逆向分析TDC‘s keygenme(手脱压缩壳)
系统 : Windows xp 程序 : TDC‘s keygenme 程序下载地址 :http://pan.baidu.com/s/1gdWyt6z 要求 : 脱壳 & 注册机编写 使用工具 ...
- 手动脱UPX压缩壳
示例程序演示 样例程序选择win7自带的notepad.exe,该程序原本是没有加壳的: 拷贝notepad.exe文件一个副本,重命名为notepad - upx.exe,我们对notepad - ...
- ArcThemALL!5.1:解压、脱壳、压缩样样精通
原文链接:http://www.ithome.com/html/soft/57033.htm ArcThemALL!软件主要功能: 1.支持压缩和解压功能,支持常用的7z.zip.cab.iso.ra ...
- 脱壳系列_0_FSG壳_详细版
---恢复内容开始--- 1 查看信息 使用ExeInfoPe查看此壳程序 可以看出是很老的FSG壳. 分析: Entry Point : 000000154,熟悉PE结构的知道,入口点(代码)揉进P ...
- 逆向工程之App脱壳
http://www.cnblogs.com/ludashi/p/5725743.html iOS逆向工程之App脱壳 本篇博客以微信为例,给微信脱壳."砸壳"在iOS逆向工程中是 ...
随机推荐
- CRM项目图形交互界面设计
由于我们组在刚开始的时候 ,进度比较快的!老师本来是打算最后给我们用统一的学校已经封装好的界面给我们的!看着我们的现实都写完了!老师就提前把界面都给我们了!但是觉得界面一般,不怎么好看!我们就全部都是 ...
- 第一次项目上Linux服务器(一:远程连接服务器)
一.准备工作 1.Linux服务器一台,以及服务器ip.用户名.密码 2.安装xfttp和xshell软件,资源链接,百度云链接:https://pan.baidu.com/s/1vwnlbBpmjX ...
- Spring ResponseEntity
简单记录下 ResponseEntity 的使用方式 @RequestMapping(value="/demo1" ) public ResponseEntity demo1(){ ...
- 写个OAuth2.0的请求端来测试自己的OAuth2.0服务端(二)
在上一篇文章中,我们介绍了怎么创建自己的服务器,现在我们开始写个client端,来测试. 我们创建一个MVC项目,叫TestOAuthClient 1. 代码开始 1)第一步,我们创建一个MainCo ...
- EWS 通过SubscribeToPullNotifications订阅Exchange删除邮件
摘要 在使用拉通知的方式监听exchange邮件的时候,无法监听到收件箱删除的邮件.最后通过调试发现,在删除收件箱邮件的时候,是将收件箱的邮件移动到了deleted item文件夹,会触发Moved事 ...
- 2.移植3.4内核-支持烧写yaffs2,裁剪内核并制作补丁
在上章-制作文件系统,并使内核成功启动jffs2文件系统了 本章主要内容如下: 1)使内核支持yaffs2文件系统 2)裁剪内核 3)制作内核补丁 1.首先获取yaffs2源码(参考git命令使用详解 ...
- 【Linux】 源码安装make命令详解,避免踩坑
正常的编译安装/卸载: 源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install). configure文件是一个可执行的脚本文件,它有很多选项, ...
- chomd文件权限授予
drwxr -x r- x 什么意思| | | | | | | | | | 12345678910 第一位表示文件类型.d是目录文件,l是链接文件,-是普通文件,p是管道第2-4位表示这个文件的属主拥 ...
- 我是菜鸟,我怕谁(hdu2520)
我是菜鸟,我怕谁 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- CodeDOM 系列一: 初识
最近手头项目接触到了CodeDom,顺带着在这里做个系列文章,有兴趣的可以做个参考. CodeDOM是个用于运行时生成代码,以及编译生成的代码的相关技术.我们通过构造CodeDOM这样的DOM树 ...