• 标 题:纵 横 间 谁 能 相 抗 — 论 壳 与 加 壳 技 术
  • 作 者:forgot
  • 时 间:2004-12-04,20:58
  • 链 接:http://bbs.pediy.com

在这外壳程序风起云涌的几年间,出现了无数优秀的外壳,CoDe_inJect 曾谈过对几种流行壳的看法,我斗胆结合他的言论描述一下现在常见的保护外壳:

 

 ASProtect

无可争议的外壳界老大,它开创了壳的新时代,SEH 与各种流行反跟踪技术、多态变形引擎的使用(准确来说是从病毒中借用)、BPM 断点清除等都出自于此;更为有名的当属 RSA 算法的使用,使得 DEMO 版无法被破解成完整版;Code Dips也源于这里;输入表处理即使现在看来仍很强劲。开发壳应该学习它各种算法的熟练运用,而它最失败之处就是反跟踪过于温柔,令破解者轻松研究。

 

tELock

大名鼎鼎的一款免费的保护软件,具有较强的反跟踪能力,用SEH控制 DRx结合内存校验封杀了 BPM 断点和SuperBPM 等工具。并有 BPE32 变形引擎产生很多异常代码干扰跟踪。输入表的修复让人头痛了好一阵子,于此形成讽刺意味的是,输入表在重定向之前会在内存中以完整的形态出现。值得一提的是heXer 花费了数月零散时间,将它逆向并做出了一个加强版,称之为 tELock X。

 

PELock

PELock应该是很多壳的综合,输入表处理、RSA算法、反跟踪、清除断点、SHE 都用到了,而且是第一个可以在Win98下检测出IceDump的壳。在这个壳中第一次使用了清除代码、加密代码、锁定代码,使被加密的程序更难转储。

 

 DBPE

这个壳在国内如日中天,奥妙在于哪里?就在于反跟踪做得比较完善,它是很早使用驱动的壳,虽然驱动的运用仅仅是为了在WinNT下切到Ring-0, 但开创了壳使用驱动的先例。输入表处理一般,修改了中断向量并使用其进行解码,一些版本中有 MMXE 变形引擎使跟踪起来眼花缭乱。可惜的是由于作者对 RSA 的错误理解,使破解者可以做出注册机,且即使不注册也可以脱壳。

 

SVKP

这个壳的有着深厚的背景, 那就是anticracking.sk 与DAEMON、 EliCZ等一大批传说中的人物有着密切的关系,但是这个壳的反跟踪和输入表处理都不够理想,可能跟作者的编码能力有关吧。驱动在这个程序中使用比较熟练,一些系统上会隐藏进程使得ImportREC等工具遇到阻碍,运用了 KME 变形引擎使代码在堆栈中执行,跟踪起来困难重重。

 

Xtreme-Protector

如它的名字一样,似乎是目前最强悍的壳,也是驱动程序使用最为熟练的壳,驱动有解码、反跟踪的作用,多线程的SMC使得程序的保护能力直线上升。令很多没有硬件调试器的破解者望而却步。

 

Star-Force

与 Xtreme-Protector不相伯仲的强大外壳,它的核心是一个伪代码的解释器,大大复杂了对其的研究工作;一部分导入函数的代码是从系统库中拷贝出来并进行修改过的;一部分程序代码只有在执行时候才解密出来。保护中还大量的应用了这些手段:检测某些内存段的CRC 校验和,经常地将DRx清零,利用RDTSC指令来控制解码不同块的解码时刻,最后一块代码的解码甚至通过截获Int 0在 Ring-0 中进行。不过它多用于光盘加密,在共享软件中并不多见。

 

Armadillo

当今猛壳之一,壳如其名拥有厚重的装甲,加壳方式有两种,一种是标准方式,另一种是CopyMem-II+Debug-Blocker,其标准加壳方式相对来说则容易的多。双进程方式加壳的修复着实是一件令人头疼的工作。

 

Hying's PE-Armor

网络游戏外挂中经常会遇到的壳,许多人对其避而不谈令它蒙上了浓重的神迷色彩。它拥有伪装功能,初学者常常被探测软件的信息所迷惑。DRx与校验和解码技巧非常普遍,输入表的处理比较好,会针对对不同的编译器做特殊处理,内涵仿真虚拟机系统作为SDK使得脱壳更为困难。它的一个非常老的版本源代码在看雪的新书《软件加密内幕》中公开,几乎没有什么强度,但通过其学习外壳开发非常有价值。

 

ACProtect

首次使用了一些新反跟踪技巧的壳,刚刚浮出水面的一段时间内闹得沸沸扬扬后被123112用他的妖幻调试器 TRW2000 结果了,有关它的一些反跟踪,fly写过一些详细介绍,这里不再赘述。经过很多版本的改进,ACProtect的 Embedded Protect 和 RSA Protect 做得非常不错,即使不使用SDK修复起来也是非常不便的。另外fly总结了利用“ESP定律”的方法,可以减轻跟踪强度。

 

Obsidium

这个壳的特色在于支持分页加密,并且拥有强大的代码、资源充定位功能,令修复很困难。输入表的处理似乎不错,新版本不幸激发了 heXer 通宵的兴趣在一夜之间支离破碎。

 

Pll621Shell

山村老妖Pll621的私人工具,先于Hying的壳拥具有Dump Shield 功能,花指令繁多,Win98下跟踪比较麻烦,输入表重构但加密简单,最大的特色是会伪装为VC++6.0。这个壳停止更新很久了,但籍于它作者的名字,很多人从未放弃过对它的追求。

 

PESpin

压缩与加密并重的壳,输入表处理较好,代码替换功能据说非常强大,不过fly与他的一个神秘朋友一举击破它的主程序防护,令作者也不得不写信询问脱壳的方法。酝酿中的新版本可能使用KME变形引擎,不过在WinXP Sp2的DEP机制中我只能祝愿它能够如愿运行起来。

 

SDProtector(SoftDefender)

软件保护神,极多的反跟踪技巧和花指令,即使阅读源代码理解都非常困难。多线程的全程保护令它增色不少,并且具有伪装为VC++的功能,也许会逐渐取代幻影成为国内加密软件的霸主。由于充斥着大量的SEH、反跟踪和自校验,脱壳时必须全程跟踪,即使h****、Y*** 这样的超人也许要一定时间。 

 

EncryptPE 2004

2003版本已经曾为过去,不多做评价。新的EPE具有良好的兼容性(并非指运行的兼容性)、无限层加密支持和自调试机制,并且带包括易语言在内的多种SDK。heXer预言它将是未来使用最多的壳,其实力可想而知。

 

VCASM

最近VCASM新出了Vcasm-Protector,尚未见有评论。VCASM是一个作者的老作品,它使用4个进程互相调试和大约3个线程反跟踪,充斥的难以计数的异常,从头跟到入口几乎成为不可能。目前破解方法似乎只有附加在运行后的进程上写代码修复,但是如果和其他外壳配合加密了数据段,脱壳就会变得极度困难了。

 

eXcalibur

中文名如雷贯耳,叫“仙剑”,不过金玉其外败絮其中,实在有辱这个名字。作者是 LiNSoN(过去的 fORGAT),说来惭愧,它纯粹是为了学习加密和汇编而做的壳,没甚么自己的特色,并且基本都是借用他人代码,它的价值仅仅限于给初学者做练习了,源代码全部公开,作者自己都没了。唯一值的说的,是它的最后一个版本中附带了一首动听的MIDI《御剑江湖》。

 

<未完待续,下一章具体讨论加壳技术>