加密保护壳主要通过运用各种反跟踪技术来保护程序不被调试、脱壳,以此防止软件的代码和逻辑被非法获取和篡改,确保软件的安全性和完整性。这类壳通常会采用加密算法对程序代码进行加密,使破解者难以直接分析和修改程序内容;还会使用反调试技术,检测并阻止调试器对程序的调试操作;有些还会具备反模拟器功能,防止程序在模拟器中被分析。不过,加密保护壳在保护程序的同时,可能会对程序的运行效率产生一定影响,因为在程序运行时需要进行解密等额外操作。而且,随着破解技术的不断发展,加密保护壳也需要不断更新和改进,以应对新的破解手段。
常见的加密保护壳有 ASProtect、Armadillo、EXECryptor 等。ASProtect 是一款非常强大的 Windows 32 位保护工具,开发者为俄国人 Alexey Solodovnikov。它拥有多种保护措施,如压缩、加密、反跟踪代码、反 - 反汇编代码、CRC 校验和花指令等 。它使用 Blowfish、Twofish、TEA 等强劲的加密算法对程序代码进行加密,还用 RSA1024 作为注册密钥生成器 。通过 API 钩子(包括 Import hooks 即 GPA hook 和 Export hooks)与加壳的程序进行通信 ,甚至用到了多态变形引擎,使得程序在不同运行环境下表现出不同的形态,增加破解难度 。此外,ASProtect 还为软件开发人员提供 SDK,实现加密程序内外结合,进一步增强软件的保护能力 。然而,由于其名气较大,研究它的人众多,所以相对容易被脱壳。
Armadillo 也称穿山甲,是一款应用面较广的壳。它可以运用多种手段来保护软件,同时也可以为软件加上种种限制,包括时间、次数、启动画面等等 ,很多商用软件都采用其加壳。Armadillo 对外发行时有 Public 和 Custom 两个版本,其中 Public 是公开演示的版本,Custom 是注册用户拿到的版本,只有 Custom 才有完整的功能,Public 版有功能限制,强度较低 。它的一个比较强大的保护选项是 Nanomites 保护(即 CC 保护) ,在加壳时,它会将需要保护的代码里的所有跳转指令换为 INT3 指令(机器码 CC) 。Armadillo 采用双进程运行模式,若子程序遇到 CC 异常,父程序会截获这个 INT3 异常,计算出跳转指令的目标地址并将其反馈给子进程,使子进程继续运行 ,通过这种方式有效地增加了破解难度。
EXECryptor 也是一款功能强大的加密壳,它的特点是 Anti - Debug 做的比较隐蔽,采用了虚拟机保护一些关键代码 。它允许软件开发人员指定部分源代码作为核心加密区域,可以对该区域实施多层保护 ,软件开发人员能够精确控制这部分代码的加密强度以及代码变形情况 。此外,EXECryptor 拥有高度灵活的注册和许可管理系统,它可以为软件产品提供简短强壮的序列号(12 - 16 字符) ,序列号可以有时间限制,可以绑定到硬件 ID ,可以包含有加密的注册信息(例如许可类型),甚至允许包含用户自定义信息 ,还支持泄漏密钥的黑名单功能 。同时,它还支持代码和资源的压缩,主要用来减少带宽占用和加快下载速度 ,并且不仅仅支持 EXE 文件,还可以对 DLL 和 ActiveX 组件进行加密 。虽然由于兼容性等原因,采用其保护的商业软件不是太多,但它在加密保护方面的技术实力依然不容小觑。