写在前面的话:

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;

结语:整体来看,在脱壳的时候,虽说是压缩壳,但是,只要找到那几个关键的步骤点,我们是没有必要去搞懂具体是怎么压缩的;

因为,压缩千变万化,当然,如果想练习下阅读汇编的能力,是推荐读者找个壳,自己仔细单步分析下的;

转载于:https://www.cnblogs.com/Reginald-S/p/8879975.html

脱壳_00_压缩壳_ASPACK相关推荐

  1. 逆向破解程序脱壳篇-压缩壳

    一.普及 What?壳 所谓"壳"就是专门压缩的工具. 这里的压缩并不是我们平时使用的RAR.ZIP这些工具的压缩,壳的压缩指的是针对exe.com.和dll等程序文件进行压缩,在 ...

  2. 脱壳入门初级教学(第四课 常见压缩壳与加密壳)

    转自:http://bestmk.cn/thread-491.htm 加壳软件按照其加壳目的和作用,可分为两类:一是压缩(Packers),二是保护(Protectors).压缩这类壳主要目的是减小程 ...

  3. 脱壳入门(三)之UPX压缩壳

    脱壳入门(三)之UPX压缩壳 一.找OEP 查壳:UPX壳.链接器版本2.25(可能是Delphi程序).区段信息 根据ESP定律寻找OEP OEP定律原理:壳代码就像一个函数,进入时会开辟堆栈.保存 ...

  4. 006 kkrunchy_Ryd之类FSG压缩壳

    文章目录 前言 查壳 OD脱壳 修复导入表 前言 最近一直在看脱壳系列的教程,国内能找到的脱壳视频几乎都看了个遍,大部分由于年代实在是太久了,附带的示例程序完全不能运行,或者是某些未知原因用相同的步骤 ...

  5. 【2022.1.3】手脱压缩壳练习(含练习exe)

    [2022.1.3]手脱压缩壳练习(含练习exe) 文章目录 [2022.1.3]手脱压缩壳练习(含练习exe) 0.简介 1.单步跟踪法 (#)方法介绍 (0)练习exe下载 (1).查看源程序 ( ...

  6. 【胖虎的逆向之路】04——脱壳(一代壳)原理脱壳相关概念详解

    [胖虎的逆向之路]04--脱壳(一代壳)原理&脱壳相关概念详解 [胖虎的逆向之路]01--动态加载和类加载机制详解 [胖虎的逆向之路]02--Android整体加壳原理详解&实现 [胖 ...

  7. android+so+upx,UPX压缩壳简介

    文件目录 首先看看UPX压缩壳的一个特点 壳特点 拿到一个so文件先放进IDA解析一波,从导出函数列表中我们可以看到一个函数叫做init_proc(),点进去可以看到上面的一大堆IDA识别不了的代码, ...

  8. 35. 脱壳篇-UPX和WinUpack压缩壳的使用和脱法

    UPX官网:http;//upx.sourceforge.net UPX加壳 通过cmd窗口执行,进入upx目录,执行: upx.exe fishc.exe 或者直接将exe拖至upx.exe上即可 ...

  9. 手工脱壳之 FSG压缩壳【IAT反修复】

    一.工具及壳介绍 使用工具:Ollydbg,PEID,ImportREC,LoadPE FSG壳 2.0: 二.脱壳 1.追踪 修复IAT表代码 入口处,没有pushad特征,无法使用ESP定律. 查 ...

  10. 手脱压缩壳UPX的4种查OEP方法

    目录 先使用PEid进行查壳,可以看出壳的详细信息 方法一 单步跟踪 方法二 ESP定律法 方法三 两次内存镜像法 方法四 一步直到法 先使用PEid进行查壳,可以看出壳的详细信息 方法一 单步跟踪 ...

最新文章

  1. 关于子业之间相互取得元素或者方法
  2. Visual Paradigm 教程[UML]:如何使用刻板印象和标记值?(上)
  3. jquery视频教程
  4. 初步认识Volatile-从硬件层面了解可见性的本质
  5. 【matplotlib】远程服务器使用报错 $DISPLAY
  6. Android View.onMeasure方法的理解
  7. php常用的的字符串转换
  8. 怎么关闭苹果手机自动扣费_这些手机功能不关闭,可能会被“自动扣费”
  9. Red5开发第一步-Hello World
  10. LeetCode刷题——88. 合并两个有序数组
  11. 【Lolttery】项目开发日志 (七)socket io 结合 react js实现简单聊天室
  12. FLASH学习(一)
  13. mac无线连接打印机进行打印和扫描
  14. 电脑如何安装鸿蒙系统win双系统,电脑怎么装双系统|电脑双系统安装教程
  15. VMware ESXi/ESX 的内部版本号和版本 (2143832)
  16. LeetCode 41. 缺失的第一个正数 First Missing Positive
  17. redhat linux光盘4,技巧:把3张Redhat Linux 9的安装光盘刻录到一张DVD光盘中
  18. 风雨砥砺,岁月如歌——Ts之箭头函数
  19. python 入门到实践期末考试常出现的考试内容_测试类——python编程从入门到实践...
  20. WordPress大前端乐动体育指出:主题博客模板新增9个功能,修复7个bug

热门文章

  1. DoS攻击服务器过程
  2. 最优控制理论 八、CasADi求解路径约束轨迹优化的多重打靶法
  3. mantis系统php版本,PHP_mantis安装、配置和使用中的问题小结,开发需要,安装mantis(Mantis Bug Tra - phpStudy...
  4. Python 网页下载文件
  5. 核心交换机与普通交换机的区别
  6. 我的编程之路点滴记录(二)
  7. spyder python调试查看类信息_Python调试工具-Spyder
  8. 马步站桩22个要领的几个关键问题解释
  9. iOS10更新_本地通知新框架UserNotifications
  10. vs2008中文版提供下载(包含中文msdn),包括vs2008序列号和破解方法。