前言

结合脱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的更多相关文章

  1. ASPack壳脱壳实验

    实验目的 1.学会使用相关软件工具,手动脱ASPack壳. 2.不要用PEiD查入口,单步跟踪,提高手动找入口能力. 实验内容 手动对文件"ASPack 2.12 - Alexey Solo ...

  2. 简单脱壳教程笔记(2)---手脱UPX壳(1)

    本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记. ximo早期发的脱壳基础视频教程 下载地址如下: http://down.52pojie.cn/%E5%90%BE%E7%88%B1%E7% ...

  3. <逆向学习第二天>如何手动脱UPX、Aspack壳

    UPS.AsPack压缩壳介绍: UPX .AsPack是一款先进的可执行程序文件压缩器.压缩过的可执行文件体积缩小50%-70% ,这样减少了磁盘占用空间.网络上传下载的时间和其它分布以及存储费用. ...

  4. 手脱Aspack变形壳1

    1.载入PEID Aspack v2.12 -> www.aspack.com 2.载入OD,不管是看查壳信息还是看入口特征都跟我上一次发的一个手脱Aspack v2.12的帖子相同http:/ ...

  5. 【个人笔记】ximo早期发的脱壳教程——手脱UPX壳

    [个人笔记]ximo早期发的脱壳教程--手脱UPX壳   壳分为两种:压缩壳和加密壳,UPX是一种很简单的压缩壳.   手脱UPX壳: 工具:ExeinfoPE.OD 对象:rmvbfix 方法1:单 ...

  6. 手脱ASPack v2.12变形壳2

    1.PEID载入 ASPack v2.12 2.载入OD,跟之前帖子的入口特征相同,都是一个pushad,但是请不要怀疑这是同一个壳,绝对不是,pushad下一行ESP定律下硬件断点,然后shift+ ...

  7. [视频]K8软件破解脱壳入门教程

    [视频]K8软件破解脱壳入门教程 链接:https://pan.baidu.com/s/1aV9485MmtRedU6pzyr--Vw 提取码:vbak C:\Users\K8team\Desktop ...

  8. 深入底层逆向分析TDC‘s keygenme(手脱压缩壳)

    系统 : Windows xp 程序 : TDC‘s keygenme 程序下载地址 :http://pan.baidu.com/s/1gdWyt6z 要求 : 脱壳 & 注册机编写 使用工具 ...

  9. 脱壳第一讲,手工脱壳ASPack2.12的壳.ESP定律

    脱壳第一讲,手工脱壳ASPack2.12的壳.ESP定律 一丶什么是ESP定律 首先我们要明白什么是壳.壳的作用就是加密PE的. 而ESP定律就是壳在加密之前,肯定会保存所有寄存器环境,而出来的时候, ...

随机推荐

  1. java IO流文件拷贝文件(字节流标准写法)

    public static void copyFile(String srcPath, String destPath) { FileInputStream fis = null; FileOutpu ...

  2. CF524F And Yet Another Bracket Sequence 题解

    题目链接 算法:后缀数组+ST表+贪心   各路题解都没怎么看懂,只会常数巨大的后缀数组+ST表,最大点用时 \(4s\), 刚好可以过... 确定合法序列长度   首先一个括号序列是合法的必须满足以 ...

  3. C语言结构体及其内存布局

    code[class*="language-"], pre[class*="language-"] { color: rgba(51, 51, 51, 1); ...

  4. .Net5下WebRequest、WebClient、HttpClient是否还存在使用争议?

    WebRequest.WebClient.HttpClient 是C#中常用的三个Http请求的类,时不时也会有人发表对这三个类使用场景的总结,本人是HttpClient 一把梭,也没太关注它们的内部 ...

  5. 微信二维码引擎OpenCV开源研究

    <微信二维码引擎OpenCV开源研究> 一.编译和Test测试        opencv_wechat_qrcode的编译需要同时下载opencv(https://github.com/ ...

  6. 自动QQ邮箱发送邮件

    语言:python 参考:https://www.runoob.com/python/python-email.html 前提: 1.QQ邮箱开启了SMTP服务 2.生成了授权码,这个授权码将作为自己 ...

  7. 阿里云 RTC QoS 弱网对抗之变分辨率编码

    本文为 QoS 弱网优化系列的第二篇 作者|安基程.田伟峰 审校| 泰一 视频编码中的变分辨率问题及解决 变分辨率在弱网场景的实际应用中非常常见,网络状况不好的时候降低分辨率可以降低码率,减少块效应, ...

  8. 文字变图片——GitHub 热点速览 v.21.14

    作者:HelloGitHub-小鱼干 程序的力量,在 deep-daze 体现得淋漓尽致,你用一句话描述下你的图片需求,它就能帮你生成对应图片.同样的,appsmith 的力量在于你只要拖拽即可得到一 ...

  9. [二分匹配]Asteroids

    A s t e r o i d s Asteroids Asteroids 题目描述 Bessie wants to navigate her spaceship through a dangerou ...

  10. 201871030131-谢林江 实验二 个人项目—《D{0-1} KP》项目报告

    项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业要求 我的课程学习目标 1.学习编写PSP2.完成个人项目实验要求3.在Github建仓 这个作业在哪些方面帮助我实现学习目标 1.首次编 ...