EXE软件-各类壳的详细介绍
目录
(一)ASPacK
(二)UPX
(三)PECompact
(四)ASProtect
(五)Armadillo(穿山甲)
(六)EXECryptor
(七)Themida
(八)VMProtect
(一)ASPacK
ASPacK 作为一款 Win32 可执行文件压缩软件 ,其功能主要聚焦于对特定文件类型的高效压缩。它能够对 Windows 32 位可执行文件(.exe)以及库文件(.dll、.ocx)施展压缩操作 ,并且在压缩比率上表现出色,高达 40% - 70% 。这意味着,原本体积较大的软件在经过 ASPack 处理后,其占用的磁盘空间将大幅减少。以一款未加壳时大小为 100MB 的软件为例,使用 ASPack 加壳后,其大小可能被压缩至 30MB - 60MB 之间 ,这对于软件的存储和传输都极为有利。
在实际应用场景中,比如一些软件下载网站,大量的软件资源需要存储和供用户下载。如果这些软件都使用 ASPack 加壳压缩,网站的服务器存储压力会显著降低,同时用户下载软件所需的时间也会大幅缩短。从技术原理上看,ASPack 在压缩时会对 EXE 文件的某些部分进行重写,它会深入分析文件结构,找出其中可以优化和压缩的部分,比如程序中的冗余代码、重复的资源等,然后将这些部分进行高效压缩,从而在不影响程序正常运行的前提下,减小文件大小。而且,由于压缩后的数据量减少,程序在启动时的初始加载速度也可能加快,因为需要从磁盘读取到内存的数据变少了,用户能够更快地启动软件并开始使用 。此外,ASPack 在压缩文件的过程中,还会尽量保持原始文件的外部属性,像文件名、版本信息和图标等都不会发生改变,用户在使用加壳后的软件时,几乎察觉不到软件已经被压缩处理过。
(二)UPX
UPX 是一款经典的免费可执行文件压缩程序 ,它以命令行方式进行操作,虽然对于普通用户来说,命令行操作可能存在一定门槛,但也正是这种方式赋予了它强大的灵活性和高效性。其压缩算法是自行实现的,这使得它在压缩速度方面表现极为出色,能够快速地对各种可执行文件进行压缩处理 。UPX 支持的可执行文件格式非常广泛,涵盖了 Windows 95/98/ME/NT/2000/XP/CE 程序和动态链接库、DOS 程序、Linux 可执行文件和核心等 。这意味着无论是 Windows 系统下的各类软件,还是 DOS 系统中的程序,亦或是 Linux 系统的可执行文件,都可以使用 UPX 进行压缩。
在压缩比率上,UPX 同样表现优异,经过它压缩的程序体积可缩小 50% - 70% 。例如,一个原本大小为 50MB 的 Windows 程序,使用 UPX 压缩后,可能会减小到 15MB - 25MB 左右 。这不仅大大减少了磁盘占用空间,对于需要通过网络进行软件分发的开发者来说,也能显著降低网络上传下载的时间和其它分布以及存储费用 。而且,UPX 的一大优势在于,它在压缩程序时不会造成任何功能损失,压缩后的程序和程序库在运行时依然能够保持原有的性能,不会因为压缩而出现运行缓慢或者功能异常的情况 。对于大部分支持的格式,UPX 压缩后的程序在运行时也不会带来内存上的不利影响,程序可以在内存中正常地加载和运行 。考虑到命令行操作的不便,也有 Free UPX 等图形界面程序可供选择,这些图形界面程序将 UPX 的功能以更直观的方式呈现给用户,用户只需通过简单的鼠标点击操作,就能完成文件的压缩,降低了使用门槛,让更多用户能够轻松使用 UPX 进行文件压缩。
(三)PECompact
PECompact 是一款功能强大的可执行文件压缩工具 ,它支持的文件类型丰富多样,包括 EXE、DLL、SCR、OCX 等文件 。与其他同类压缩软件相比,PECompact 具有独特的优势。它为用户提供了多种压缩项目的选择,这意味着用户可以根据自身需求,灵活地确定哪些内部资源需要进行压缩处理 。比如,对于一个包含大量图片、音频等资源文件的软件,用户可以选择只压缩程序的代码部分,保留资源文件的原始状态,以确保软件在运行时能够快速加载这些资源;或者用户也可以选择只压缩资源文件,而保持代码部分的完整性,以满足不同的应用场景和需求 。
同时,PECompact 还提供了加解密的插件接口功能 。这一功能为软件开发者和高级用户提供了更多的扩展空间,他们可以通过开发或使用插件,进一步增强软件的保护和压缩效果。例如,开发者可以利用插件接口,添加自定义的加密算法,对软件的关键代码和数据进行更高级别的加密保护,防止软件被破解和篡改;或者使用插件来优化压缩算法,提高压缩比率,使软件在压缩后的体积更小 。在实际应用中,对于一些对安全性和压缩效果有较高要求的商业软件,开发者可以借助 PECompact 的插件接口,开发出适合自己软件的加解密插件,从而为软件提供更全面的保护和优化 。这种高度的可定制性和扩展性,使得 PECompact 在众多压缩壳中脱颖而出,成为了软件开发者和用户的重要选择之一。
(四)ASProtect
ASProtect 是一款堪称强大的 Windows 32 位保护工具 ,其开发者为俄国人 Alexey Solodovnikov。这款工具集成了多种先进的保护措施,为软件提供了全方位的防护。首先,它具备压缩功能,能够在一定程度上减小软件的体积,提高软件的存储和传输效率 。其次,在加密方面,它采用了如 Blowfish、Twofish、TEA 等强劲的加密算法,对程序代码进行深度加密 ,使得破解者难以直接读取和分析程序的原始代码,大大增加了软件被破解的难度 。同时,它还用 RSA1024 作为注册密钥生成器 ,进一步增强了软件注册机制的安全性,防止非法注册和盗版使用 。
ASProtect 还运用了反跟踪代码、反 - 反汇编代码、CRC 校验和花指令等技术 。反跟踪代码能够有效阻止破解者使用调试工具对软件进行跟踪调试,使破解者难以获取软件的运行逻辑和关键信息;反 - 反汇编代码则针对反汇编工具,让反汇编后的代码变得难以理解和分析;CRC 校验用于检测程序在运行过程中是否被篡改,一旦发现程序文件被修改,软件可以采取相应的措施,如停止运行或提示用户;花指令则是在程序代码中插入一些看似无用但实际上会干扰破解者分析的指令,增加代码的复杂性 。此外,ASProtect 通过 API 钩子(包括 Import hooks 即 GPA hook 和 Export hooks)与加壳的程序进行通信 ,这种通信方式使得壳与程序之间能够实现紧密的协作,进一步增强了软件的保护能力 。它甚至用到了多态变形引擎,使程序在每次运行时的代码形态都有所不同,让破解者难以找到固定的破解模式 。为了更好地满足软件开发人员的需求,ASProtect 还提供了 SDK,软件开发人员可以利用 SDK 实现加密程序内外结合,根据软件的具体需求,定制更个性化的保护方案 。然而,由于 ASProtect 在软件保护领域名气较大,研究它的人众多,其保护机制也被研究得较为透彻,所以相对来说容易被脱壳 。
(五)Armadillo(穿山甲)
Armadillo,也就是我们常说的穿山甲,是一款应用面相当广泛的壳 。它的强大之处在于可以运用多种手段来保护软件 ,同时还能为软件添加各种各样的限制条件 。在保护手段方面,它可以对软件的代码进行加密处理,使破解者难以直接分析和修改代码;采用反调试技术,防止破解者使用调试工具对软件进行调试,从而获取软件的关键信息 。在限制条件设置上,它可以设置软件的使用时间限制,比如只允许软件在特定的时间段内使用,或者设置软件的使用次数限制,当用户使用次数达到设定值后,软件将无法继续使用 ;还可以添加启动画面,在软件启动时显示特定的画面,用于宣传软件或者提醒用户相关信息 。许多商用软件都选择采用 Armadillo 加壳,以保护自己的软件版权和商业利益 。
Armadillo 对外发行时有 Public 和 Custom 两个版本 。其中,Public 是公开演示的版本,主要用于向用户展示软件的基本功能,但它存在功能限制,保护强度较低 ,不适合用于正式的软件保护;而 Custom 是注册用户拿到的版本,拥有完整的功能 ,能够为软件提供全面的保护 。在 Armadillo 众多的保护选项中,Nanomites 保护(即 CC 保护)是比较强大的一项 。在加壳时,它会将需要保护的代码里的所有跳转指令换为 INT3 指令(机器码 CC) 。Armadillo 采用双进程运行模式,当子程序遇到 CC 异常时,父程序会截获这个 INT3 异常,然后通过复杂的计算得出跳转指令的目标地址,并将其反馈给子进程,使子进程能够继续正常运行 。通过这种独特的保护机制,Armadillo 有效地增加了软件被破解的难度 ,为软件提供了更可靠的保护 。
(六)EXECryptor
EXECryptor 是一款功能强大且具有独特技术特点的加密壳 。它的第一个显著特点是 Anti - Debug(反调试)功能做得非常隐蔽 。在软件保护领域,反调试技术是防止软件被破解的重要手段之一。EXECryptor 通过采用一系列复杂的技术和算法,巧妙地隐藏了自身的反调试机制,使得破解者很难察觉到软件正在对调试行为进行检测和阻止 。这就大大增加了破解者使用调试工具对软件进行分析和破解的难度,有效地保护了软件的安全性 。
EXECryptor 的另一个重要特点是采用了虚拟机保护一些关键代码 。它允许软件开发人员指定部分源代码作为核心加密区域,然后对该区域实施多层保护 。软件开发人员可以根据软件的具体需求和安全级别,精确控制这部分代码的加密强度以及代码变形情况 。通过虚拟机保护技术,将关键代码转换为一种在虚拟机环境中运行的特殊形式,使得破解者即使能够获取到代码,也难以理解和分析其真正的逻辑 。此外,EXECryptor 还拥有高度灵活的注册和许可管理系统 。它可以为软件产品生成简短强壮的序列号(12 - 16 字符) ,这些序列号可以设置时间限制,比如只在一定时间内有效;也可以绑定到硬件 ID ,确保软件只能在特定的硬件设备上运行;还可以包含有加密的注册信息(例如许可类型),甚至允许包含用户自定义信息 。同时,它还支持泄漏密钥的黑名单功能 ,一旦发现某个密钥被泄露,就可以将其加入黑名单,使该密钥失效 。EXECryptor 不仅支持对 EXE 文件进行加密保护,还可以对 DLL 和 ActiveX 组件进行加密 ,进一步扩大了其应用范围 。虽然由于兼容性等原因,采用其保护的商业软件不是太多,但它在加密保护方面的技术实力依然不容小觑 。
(七)Themida
Themida 是 Oreans 公司推出的一款商业壳 ,在软件保护领域具有独特的地位。它最大的特点就是采用了先进的虚拟机保护技术 。虚拟机保护技术是目前软件保护中非常有效的一种手段,Themida 通过将程序中的关键代码转换为在虚拟机环境中运行的字节码,使得破解者难以直接分析和理解这些代码的逻辑 。在使用 Themida 时,软件开发人员需要擅用其提供的 SDK(软件开发工具包) 。SDK 为开发者提供了一系列的接口和工具,开发者可以利用这些工具,将程序中的关键代码标记出来,让 Themida 用虚拟机对其进行保护 。通过合理使用 SDK,能够将软件中最核心、最敏感的部分进行深度保护,从而大大提高软件的安全性 。
然而,Themida 也存在一些不足之处。其中最明显的就是使用 Themida 加壳后生成的软件体积较大 。这是因为虚拟机保护技术本身需要额外的代码和数据来实现虚拟机环境的搭建和运行,这些额外的内容会增加软件的大小 。对于一些对软件体积有严格要求的应用场景,比如需要在移动设备上运行的软件,或者需要通过网络进行快速传输的软件,较大的软件体积可能会成为一个限制因素 。尽管存在这个缺点,但由于其强大的虚拟机保护技术,Themida 在对软件安全性要求较高的领域,如商业软件、游戏软件等,仍然得到了广泛的应用 。与 Themida 同一公司的 WinLicense,和 Themida 属于一个系列产品,WinLicense 主要多了一个协议,可以设定软件的使用时间、运行次数等功能 ,但两者的核心保护机制是一样的 。
(八)VMProtect
VMProtect 是一款当前被公认为最强的纯虚拟机保护软件 ,它在软件保护领域具有极高的地位。经 VMProtect 处理过的代码,至今还没有人能够公开宣称可以将其还原 。这主要得益于它采用的先进虚拟机保护技术,它能够对指定的代码进行深度变形和虚拟化处理 。在处理过程中,VMProtect 会将原始代码转换为一种在自定义虚拟机环境中运行的特殊形式,这种形式的代码与原始代码在结构和逻辑上都有很大的差异 。虚拟机环境中的指令集和执行逻辑都是 VMProtect 自定义的,破解者要想分析和还原这些代码,就需要深入了解 VMProtect 的虚拟机机制,而这是非常困难的 。
不过,VMProtect 也并非完美无缺。它的一个明显缺点是会影响程序的运行速度 。由于程序在运行时需要在虚拟机环境中执行代码,而虚拟机的运行需要额外的资源和时间来进行指令解释和环境管理,这就导致程序的执行效率会有所降低 。因此,在一些对速度要求非常高的场合,比如实时性要求极高的游戏引擎、科学计算软件等,使用 VMProtect 可能会对软件的性能产生较大影响,不太适合使用 。在版本方面,VMProtect 1.22.3 之前是免费版 ,这个版本可以支持对 EXE、DLL 等文件进行保护 ,为一些个人开发者和小型团队提供了一定的软件保护能力;而更高版本则需要购买 ,购买后的版本支持对驱动的保护 ,能够为软件提供更全面的保护 。现在流行的做法是,先用 VMProtect 将软件的核心代码进行处理,利用其强大的保护能力保护软件的关键部分,然后再选用一款兼容性好的壳对整个软件进行进一步保护 ,从而在保证软件安全性的同时,尽量减少对软件性能的影响 。