2024年2月25日发(作者:)

一、概论

壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳两种

压缩壳有:UPX、ASPCAK、TELOCK 、PELITE 、NSPACK 等等。

加密壳有:ARMADILLO 、ASPROTECT 、ACPROTECT、 EPE 、SVKP 等等。

顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。当然加密壳的保护能力要强得多! 现在有些壳工具可以兼有两种功能。

二、常见脱壳方法

预备知识

(压栈) 代表程序的入口点。

(出栈) 代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近 。

:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。

方法一:单步跟踪法

1.用OD(ollydlbg软件的简称)载入,点“不分析代码!”

2.单步向下跟踪F8,实现向下的跳。也就是说向上的跳不让其实现!(通过F4)

3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——〉运行到所选)

4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!

5.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP

6.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入

7.一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。

在有些壳无法向下跟踪的时候,我们可以在附近找到没有实现的大跳转,右键--〉“跟随”,然后F2下断,Shift+F9运行停在“跟随”的位置,再取消断点,继续F8单步跟踪。一般情况下可以轻松到达OEP!

方法二:ESP定律法

ESP定理脱壳(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!)

1.开始就点F8,注意观察OD右上角的寄存器中ESP有没突现(变成红色)。(这只是一般情况下,更确切的说我们选择的ESP值是关键句之后的第一个ESP值)

2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者是hr XXXXXXXX),按回车!

3.选中下断的地址,断点---〉硬件访---〉WORD断点。

4.按一下F9运行程序,直接来到了跳转处,按下F8,到达程序OEP。

方法三:内存镜像法

1:用OD打开软件!

2:点击选项——调试选项——异常,把里面的忽略全部√上!CTRL+F2重载下程序!

3:按ALT+M,打开内存镜象,找到程序的第一个.rsrc.按F2下断点,然后按SHIFT+F9运行到断点,接着再按ALT+M,打开内存镜象,找到程序的第一个.rsrc.上面的.CODE(也就是00401000处),按F2下断点!然后按SHIFT+F9(或者是在没异常情况下按F9),直接到达程序OEP!

方法四:“SFX”法

1:设置OD,忽略所有异常,也就是说异常选项卡里面都打上勾

2:切换到SFX选项卡,选择“字节模式跟踪实际入口(速度非常慢)”,确定。

3:重载程序(如果跳出是否“压缩代码?”选择“否”,OD直接到达OEP)

【脱壳一般流程】

查壳(工具:PEID、FI、PE-SCAN)---〉寻找OEP(OD)---〉脱壳/Dump(LordPE、PeDumper、OD自带的脱壳插件、PETools)---〉修复(Import REConstructor)

【工具介绍】

1、查壳

PEID--功能强大的侦壳工具,自带脱壳插件(但是,效果不怎么样)

工作原理:核心是(大家看看就完全明白了)[通过壳的入口特征码进行辨认]

使用方法:可以拖放、也可以把PEID添加到右键菜单里面去

FI--功能强大的侦壳工具,DOS界面。

使用方法:可以拖放、可以使用DOS命令行

2、寻找OEP

ollydbg的四个区域

几个经常使用的快捷键

F2:在需要的地方下断点(INT3型断点)

F3:选择打开程序

F4:运行到所选择的那一行

F7:单步进入

F8:单步跟踪

F9:执行程序(运行程序)

文件:

1.其中包括该菜单的下部有上次打开的纪录,该纪录保存有上次未清除的断点.

2.附加.对付那些Anti-Debug程序.先运行程序,再运行od,文件--〉附加.

查看:

1.执行模块(Alt+E),查看程序使用的动态链接库

2.查看断点.Alt+B

调试:

1.运行(F9)加载程序后,运行!

2.暂停(F12)

3.单步进入(F7)遇见CALL进入!进入该子程序.

4.单步跳过(F8)遇见CALL不进去!

5.执行到返回(ALT+F9)就是执行到该子程的返回语句

3、Dump

OD自带的脱壳插件--到达OEP之后右键。。。

LordPE、PeDumper--选择所调试的进程--右键--完整脱壳

4、修复

Import REConstructor 1.6

1.壳的概念

(1)、壳的定义

在自然界中,我想大家对壳这东西应该都不会陌生了。自然界中植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。 从功能上抽象,软件的壳和自然界中的壳相差无几。无非是保护、隐蔽壳内的东西。而从技术的角度出发,壳是一段执行于原始程序前的代码。原始程序的代码在加壳的过程中可能被压缩、加密……。当加壳后的文件执行时,壳-这段代码先于原始程序运行,他把压

缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。 软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。

2.国内外优秀壳的特点

(1)国内外优秀壳的简介

常见的国内外优秀压缩壳有:ASPacK , UPX,北斗, ECompact等。常见的的国内外加密壳SProtect,Armadillo加密壳,EXECryptor加密壳,VMProtect。

(2)国内外优秀壳的特点

压缩壳:

〈1〉ASPacK

ASPack是款Win32可执行文件压缩软件,可压缩Windows 32位可执行文件(.exe)以及库文件(.dll、.ocx),文件压缩比率高达40%~70%。

〈2〉UPX

UPX是一个以命令行方式操作的可执行文件经典免费压缩程序,压缩算法自己实现,速度极快。

〈3〉PECompact

PECompact同样也是一款能压缩可执行文件的工具(支持EXE、DLL、SCR、OCX等文件)。相比同类软件,PECompact提供了多种压缩项目的选择,用户可以根据需要确定哪些内部资源需要压缩处理。同时,该软件还提供了加解密的插件接口功能。

加密壳:

〈1〉ASProtect

ASProtect是一款非常强大的Windows 32位保护工具,这4、5年来,其一直在更新进步。其开发者是俄国人Alexey Solodovnikov。它拥有压缩、加密、反跟踪代码、反-反汇编代码、CRC校验和花指令等保护措施。它使用Blowfish、Twofish、TEA等强劲的加密算法,还用RSA1024作为注册密钥生成器。它还通过API钩子(API hooks,包括Import hooks(GPA hook)和Export hooks)与加壳的程序进行通信。甚至用到了多

态变形引擎(Polymorphic Engine)。反Apihook代码(Anti-Apihook Code)和BPE32的多态变形引擎(BPE32的Polymorphic Engine)。并且ASProtect为软件开发人员提供SDK,实现加密程序内外结合。

〈2〉Armadillo加密壳

Armadillo也称穿山甲,是一款应用面较广的壳。可以运用各种手段来保护你的软件,同时也可以为软件加上种种限制,包括时间、次数,启动画面等等!很多商用软件采用其加壳。Armadillo对外发行时有Public,Custom两个版本。Public是公开演示的版本,Custom是注册用户拿到的版本。只有Custom才有完整的功能,Public版有功能限制,没什么强度,不建议采用。

〈3〉EXECryptor加密壳

EXECryptor也是一款猛壳,可能由于兼容性等原因,采用其保护的商业软件不是太多。这款壳的特点是Anti-Debug做的比较隐蔽,另外就是采用了虚拟机保护一些关键代码。

〈4〉VMProtect

VMProtect是一款纯虚拟机保护软件,官方链接:。它是当前最强的虚拟机保护软件,经VMProtect处理过的代码,至今还没有人公开宣称能还原。

但也有缺点,就是会影响程序速度,因此在一些对速度要求很高的场合就不适合用了。VMProtect 1.22.3之前是免费版,可以支持EXE,DLL等文件。更高版本需要购买,其支持驱动的保护。现在流行的做法,先用VMProtect将你的核心代码处理一下,再选用一款兼容性好的壳保护。

3 免杀常用壳

一般免杀常用的压缩壳是UPX,北斗(NsPack)因为它兼容性非常好,在我们一般对木马加密或者加花完,有时候用别的壳压缩的话很容易出错,用UPX和(NsPack)因为它们的兼容性非常好。

一般免杀常用的加密壳的种类非常多了,一般我们大家尽量找点冷门壳,冷门壳的免杀效果非常好。因为不常见,所以免杀的时间一般都会很长。在这里我建议大家尽量在没事的时候多去一些论坛找些冷门壳。对以后免杀会很有帮助的。