脱壳入门----脱ASPack壳保护的DLL
前言
结合脱dll壳的基本思路,对看雪加密解密里的一个ASPack壳保护的dll进行脱壳分析。
脱壳详细过程
寻找程序的OEP
先将目标DLL拖入OD,来到壳的入口处。

然后利用堆栈平衡原理在pushad后,对栈顶下硬件访问断点。

之后我们直接运行程序,当程序popad后会被断下,观察得出OEP的RVA为0x1240。

找到壳的重定位代码
我们在来到程序真正的入口点后可以看到一些会被重定位的代码,我们选择最近的一个会进行重定位的代码记住其RVA。
本例子中我们选的是RVA为0x1253的代码。

然后我们重新加载dll,我们先对刚刚记住的那个RVA下内存写入断点,程序会先断在壳代码解压区块处我们需要在壳代码将所有的区段解压缩后对刚刚记住的那个RVA再下内存访问断点,然后程序会断在壳的重定位代码处。

跳过重定位代码并dump程序
我们只需要将修正重定位数据的代码nop去就可以让重定位代码无法发挥作用。

nop去重定位代码后我们继续运行程序,程序会停在我们寻找OEP时设置的断点处。然后我们就可以用LordPE来dump文件了,将dump的文件命名为ASP.dll


重建输入表
在重建输入表前我们需要知道原程序IAT表的位置,我们可以在OD中Alt + M查看内存然后我们在主模块可以看到各个区块,一般IAT表都是在.rdata区块处。我们在此处右击然后选择在cpu数据窗口查看,然后将cpu数据窗口的显示形式调为地址。我们可以看到在区块一开始就是IAT表。此IAT表的RVA为0x7000。


在查找IAT表示还要注意,不要将原程序的IAT表与壳的IAT表搞混。在区块.aspack处也存在一个IAT,这个IAT是壳代码的。

获取IAT的RVA后我们可以打开ImportRE工具重建输入表,我们在OEP处填写1240,在IAT 的RVA处填写7000,大小尽量填大点。然后点击获取输入表。


获取输入表后我们发现有好多无效的这是因为我们IAT的大小填的过大,我们只需点击显示无效函数,然后右击剪切/删除指针数据即可去除无效数据。


接着我们点击修复转存文件,并选择我们刚刚转存的ASP.dll即可生成名为ASP_.dll的文件。
修复重定位数据
如果把刚刚我们修复了输入表的dll加载到OD中我们可以看到需要重定位的数据还是按照基地址为0x400000的数据,而此时的基地址为0x220000其数据并没有被修正,这是因为windows加载器在加载的时候并没有找到重定位表,所以我们需要修复重定位表。

我们重新加载加壳的dll,来到我们刚刚找到的壳的重定位代码处,分析程序可得0x22d247地址处edi+ebx即为对应需要重定位的数据的地址。我们需要在此处打补丁获取所有需要重定位的数据的RVA地址。我们在0x22d598处写补丁程序,此处跳转到0x22d598处。

然后在0x22d598处打补丁程序,将获得的重定位数据地址存在0x229000处,0x22d600为其指针。


运行程序程序停在OEP跳转处,我们在数据窗口处可以看到重定位数据的RVA地址。(每一个dword是一个地址)

将这些二进制数据复制后用WinHex保存为bin文件。然后用拖入重定位重建工具ReloREC,然后选在重定位表存在RVA:9000处。点击Fix Dump选择我们重建了输入表的名为ASP_.dll的文件,其会生成一个名为ASP__.dll的文件。

这时在用OD加载此文件就会发现需要重定位数据处的数据已被修正。

优化PE文件
①将在壳空间中的资源数据都放到一个资源区段中,用工具DT_ResFix.exe选择对应的dll文件,然后直接重构资源。

②将壳代码的区段删除,利用pe编辑工具。

③查看pe文件头的一些数据是否有错误。(一般我们在前面重构输入表和重定位表的时候,相关工具都已经修改过了)
④在重建输入表是可以将输入表放在一个已存在的区块处,这里我们是新建了一个区块。
总结
脱dll壳的思路大致就是这样,当然各个步骤的方法不唯一,像寻找oep就有很多方法。需要根据对应的壳,灵活使用各种方法。
脱壳入门----脱ASPack壳保护的DLL的更多相关文章
- ASPack壳脱壳实验
实验目的 1.学会使用相关软件工具,手动脱ASPack壳. 2.不要用PEiD查入口,单步跟踪,提高手动找入口能力. 实验内容 手动对文件"ASPack 2.12 - Alexey Solo ...
- 简单脱壳教程笔记(2)---手脱UPX壳(1)
本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记. ximo早期发的脱壳基础视频教程 下载地址如下: http://down.52pojie.cn/%E5%90%BE%E7%88%B1%E7% ...
- <逆向学习第二天>如何手动脱UPX、Aspack壳
UPS.AsPack压缩壳介绍: UPX .AsPack是一款先进的可执行程序文件压缩器.压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间.网络上传下载的时间和其它分布以及存储费用. ...
- 手脱Aspack变形壳1
1.载入PEID Aspack v2.12 -> www.aspack.com 2.载入OD,不管是看查壳信息还是看入口特征都跟我上一次发的一个手脱Aspack v2.12的帖子相同http:/ ...
- 【个人笔记】ximo早期发的脱壳教程——手脱UPX壳
[个人笔记]ximo早期发的脱壳教程--手脱UPX壳 壳分为两种:压缩壳和加密壳,UPX是一种很简单的压缩壳. 手脱UPX壳: 工具:ExeinfoPE.OD 对象:rmvbfix 方法1:单 ...
- 手脱ASPack v2.12变形壳2
1.PEID载入 ASPack v2.12 2.载入OD,跟之前帖子的入口特征相同,都是一个pushad,但是请不要怀疑这是同一个壳,绝对不是,pushad下一行ESP定律下硬件断点,然后shift+ ...
- [视频]K8软件破解脱壳入门教程
[视频]K8软件破解脱壳入门教程 链接:https://pan.baidu.com/s/1aV9485MmtRedU6pzyr--Vw 提取码:vbak C:\Users\K8team\Desktop ...
- 深入底层逆向分析TDC‘s keygenme(手脱压缩壳)
系统 : Windows xp 程序 : TDC‘s keygenme 程序下载地址 :http://pan.baidu.com/s/1gdWyt6z 要求 : 脱壳 & 注册机编写 使用工具 ...
- 脱壳第一讲,手工脱壳ASPack2.12的壳.ESP定律
脱壳第一讲,手工脱壳ASPack2.12的壳.ESP定律 一丶什么是ESP定律 首先我们要明白什么是壳.壳的作用就是加密PE的. 而ESP定律就是壳在加密之前,肯定会保存所有寄存器环境,而出来的时候, ...
随机推荐
- 获得PyInstaller打包exe的py源码
参考链接:https://laucyun.com/33359ed9f725529ac9b606d054c8459d.html way1:pyi-archive_viewer 提取pyc,uncomp ...
- APIView里如何获取HTTP里的数据
request.data.get() 获取post方法表单里的数据 request.post.get() 获取post方法表单里的数据 request.GET.get() 获取URL里的数据 r ...
- 前端 | 使用 ECharts 绘制关系图
0 需求 做的项目需要画一个关系图,主要需求如下: 需要展示6种对象之间的关系:数据机构 数据 合约 模型 计算机构 应用 支持突出显示6种对象中的某一种的所有对象 支持Top x子图功能.top x ...
- 运维趋势2019年总结,运维就是要做到"技多不压身"
2019年 在互联网这个行业中对运维的要求越来越来越高,比如2015.16年的时候,运维只是做一些人力投入的事情,比如重启个服务,搭建一个nginx,mysql主从服务,简单的优化一下,就可以上线了, ...
- Spring IOC 特性有哪些,不会读不懂源码!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 多线程.锁.JVM调优,都背出花啦,怎么一写代码还是乱糟糟? 为什么这些无论从书本. ...
- [图论]最短路径问题 :Floyed-Warshall
最短路径问题 目录 最短路径问题 Description Input Output Sample Input Sample Output 解析 了解Floyed算法 Floyed算法的核心思想: 代码 ...
- element Notification 通知文字换行小技巧
this.$notify({ title: "通知", message: res.result, iconClass: "el-icon-bell",//自定义 ...
- 干货!Apache Hudi如何智能处理小文件问题
1. 引入 Apache Hudi是一个流行的开源的数据湖框架,Hudi提供的一个非常重要的特性是自动管理文件大小,而不用用户干预.大量的小文件将会导致很差的查询分析性能,因为查询引擎执行查询时需要进 ...
- ABP 适用性改造 - 添加 API 版本化支持
Overview 在前面的文章里有针对 abp 的项目模板进行简化,构建了一个精简的项目模板,在使用过程中,因为我们暴露的 api 需要包含版本信息,我们采取的方式是将 api 的版本号包含在资源的 ...
- 附031.Kubernetes_v1.20.4高可用部署架构二
kubeadm介绍 kubeadm概述 参考附003.Kubeadm部署Kubernetes. kubeadm功能 参考附003.Kubeadm部署Kubernetes. 本方案描述 本方案采用kub ...