常用压缩壳介绍

加壳软件按照其加壳目的和作用,可分为两类:一是压缩(Packers),二是保护(Protectors)。压缩这类壳主要目的是减小程序体积,如ASPacK、UPX和PECompact等。另一类是保护程序,用上了各种反跟踪技术保护程序不被调试、脱壳等,其加壳后的体积大小不是其考虑的主要因素,如ASProtect、Armadillo、EXECryptor等。随着加壳技术的发展,这两类软件之间的界线越来越模糊,很多加壳软件除具有较强的压缩性能,同时也有了较强的保护性能。

      目前流行的一些壳可以参考这里: http://www.pediy.com/tools/packers.htm  


1.常用压缩壳介绍    

1). ASPacK    
主页:http://www.aspack.com/ 
     ASPack是款Win32可执行文件压缩软件,可压缩Windows 32位可执行文件(.exe)以及库文件(.dll、.ocx),文件压缩比率高达40%~70%。

常用压缩壳介绍_第1张图片  

2). UPX
主页:http://upx.sourceforge.net/ 
     UPX是一个以命令行方式操作的可执行文件经典免费压缩程序,压缩算法自己实现,速度极快。(开源)

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

常用压缩壳介绍_第2张图片  

2.加密保护壳介绍    

  为了保护自己的软件不轻易被他人“借鉴”,有必要对软件进行一些加密保护,而这方面目前己有成熟的专业加密软件可选择。但不要太依赖壳的保护,大多数壳是可以被攻破的,还是在自身保护上下些功夫。加密软件比较多,但在强度与兼容性上做的好的并不多,这里向大家介绍几款常见的。

 现在壳的发展一个趋势就是虚拟机保护,利用虚拟机保护后,能大大提高强度,因此建议尽可能使用此类技术保护软件。如Themida ,WinLicense,EXECryptor等壳带有虚拟机保护功能,因此得用好其SDK。

1). ASProtect
主页:http://www.aspack.com/ 
     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,实现加密程序内外结合。

常用压缩壳介绍_第3张图片  

     ASProtect SKE系列己采用了部分虚拟机技术,主要是在Protect Original EntryPoint与SDK上。保护过程中建议大量里使用SDK, SDK使用请参考其帮助文档,在使用时注意SDK不要嵌套,并且同一组标签用在同一个子程序段里。ASProtect使用相当的简单,打开被保护的EXE/DLL文件后,选上保护的选项。再单击菜单Modes,单击Add Mode按钮,将Is this Mode Avtive选上,最后,单击Protection标签,对软件进行保护即可。ASProtect加壳过程中也可外挂用户自己写的DLL文件,方法是在上图中的External Options选项加上目标DLL即可。这样,用户可以在DLL加入自己的反跟踪代码,以提高软件的反跟踪能力。

强度评介: 由于ASProtect名气太大,研究它的人很多,因此很容易被脱壳,不推荐使用。 


2). Armadillo加密壳

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

常用压缩壳介绍_第4张图片  

强度评介: Armadillo中比较强大的保护选项是Nanomites保护(即CC保护),用的好能提高强度,其他选项没什么强度。 


3). EXECryptor加密壳

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

常用压缩壳介绍_第5张图片  

强度评介: 用好EXECryptor 虚拟机保护功能,将关键敏感代码用虚拟机保护起来,能提高强度。EXECryptor 壳能脱的人很多,但对付其虚拟机代码的人不多。 


4). Themida加密壳

      Themida是Oreans的一款商业壳,官方链接:www.oreans.com。Themida 1.1以前版本带驱动,稳定性有些影响。Themida最大特点就是其虚拟机保护技术,因此在程序中擅用SDK,将关键的代码让Themida用虚拟机保护起来。Themida最大的缺点就是生成的软件有些大。WinLicense这款壳和Themida是同一公司的一个系列产品,WinLicense主要多了一个协议,可以设定使用时间,运行次数等功能,两者核心保护是一样的。

常用压缩壳介绍_第6张图片  

强度评介: 用好其虚拟机保护功能,将关键敏感代码用虚拟机保护起来,能提高强度。 


5). VMProtect


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

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

(1).关键代码自己定位
 VMProtect并没有提供使用说明,必须告诉VMProtect你要加密的代码具体地址,这对使用者有一定的要求,至少要懂一些跟踪技术,可以用调试器,如OllyDbg跟踪到程序需要保护的地址,然后添加地址到VMProtect。
在这以一个记事本程序为例来演示一下使用方法。

 运行VMProtect后,打开NOTEPAD.EXE文件。单击Dump标签,输入要加密的起始地址,光标来到要加密代码起始地址后,点击菜单“project/new procedure”,会出现一个新的项目,如下图。

常用压缩壳介绍_第7张图片  

需要处理其他地址时,请依次操作。

注意事项:
1.用VMProtect处理,请多测试,如果不稳定,请调整被保护代码的范围。
2.VMProtect对双线程支持不是太好,请同一次仅处理一个线程内的代码。 

(2).用SDK标记代码

 VMProtect v1.2以上支持SDK了,可以编程时插入一个标记,然后在加密时,VMProtect会认出这些标记,并在有标记的地方进行保护。在程序源码中,用这对标签将一些核心代码包含,编译成EXE文件。然后用VMProtect打开EXE,单击“Project”菜单下的“New procedure”或者单击工具栏中的“New procedure”按钮,在弹出的添加地址窗口中会自动将SDK定义代码的地址填上。然后在VMProtect的“Options”窗口中设置相应的选项,最后单击工具栏中的“Compilation (F9)”按钮,便可对目标软件进行保护。经VMProtect处理过的软件,可以继续用Asprotect, Themida等加壳软件进一步保护。


 VMProtect是当前最强的虚拟机保护软件,经过VMProtect处理的软件基本是没法分析原程序思路的,关键是用好,一定要将程序关键代码进行处理。另外,经虚拟机处理代码效率会降低,因此一些对效率要求比较高的代码就不要用VMProtect进行处理。


Delphi 中的标记模式
代码:asm                                   db $EB,$10,'VMProtect begin',0         //标记开始处.end;//想保护的程序代码asm    db $EB,$0E,'VMProtect end',0           //标记结束处.end;

VC的VMProtect的宏 :
代码:#define    VMBEGIN __asm      //标记开始处.      {            _emit 0xEB        _emit 0x10            _emit 0x56            _emit 0x4D            _emit 0x50         _emit 0x72         _emit 0x6F         _emit 0x74         _emit 0x65         _emit 0x63         _emit 0x74         _emit 0x20         _emit 0x62         _emit 0x65         _emit 0x67         _emit 0x69         _emit 0x6E         _emit 0x00      }      //想保护的程序代码 #define    VMEND      __asm    //标记结束处.      {            _emit 0xEB        _emit 0x0E            _emit 0x56             _emit 0x4D             _emit 0x50         _emit 0x72         _emit 0x6F         _emit 0x74         _emit 0x65         _emit 0x63         _emit 0x74         _emit 0x20         _emit 0x65         _emit 0x6E         _emit 0x64         _emit 0x00      }

VMProtect使用相关文档:
VMProtect配合PESpin的SDK加密的另一方法      作者:acafeel
VMProtect SDK+ASProtect SDK混合编程[代码演示]  作者:Anskya 
VMProtect 与 ASProtect 在VC中的SDK编程  作者:glucose



3.小结    

更多与壳有关的描述参考:
     纵横间谁能相抗―论壳与加壳技术     作者:forgot

常见加密壳官方站点  

ASProtect            http://www.aspack.com/ 
ACProtect            http://www.ultraprotect.com/  
Armadillo            http://www.siliconrealms.com  
EXECryptor           http://www.strongbit.com/  
Obsidium             http://www.obsidium.de/ 
PESpin               http://pespin.w.interia.pl/ 
VMProtect            http://www.polytech.ural.ru/ 
Xtreme-Protector     http://www.oreans.com/xprotector/  
Themida/WinLicense   http://www.oreans.com  

本站的工具栏目:     http://www.pediy.com/tools/packers.htm

你可能感兴趣的:(常用压缩壳介绍)