许多从286时代打滚过来的老网虫,可能都还记得一个叫Pklite的软件。与当时流行的ARJ、LHA等打包软件不同的是,Pklite可以直接对EXE文件进行压缩,在执行时无须再用压缩软件解压即可直接运行,而且运行速度与压缩前毫无二致。凭借着这项“独门绝技”,Pklite当年很是风光了一阵。时过境迁,随着Windows平台的流行,界面更友好、操作更简便的Winzip、Winrar等32位压缩软件脱颖而出,如Pklite这样的“另类压缩高手”反而无用武之地了,未免让人有点遗憾。不过,近日笔者从网上又找到了两个专门对付EXE文件的压缩利器,它们就是Neolite和Aspack,这两个软件不仅完全支持Win
95/98平台,而且可压缩的文件格式也从EXE延伸到了DLL、OCX和DPL。
先来看看Neolite(图一),这是Neoworx公司开发的一个32位EXE、DLL及OCX文件压缩工具,虽然它的名字和Pklite有些类似,但功能却强大得多,而且压缩率也十分惊人,Neolite自称其压缩率一般可达到50%至70%之多!真有这么夸张吗,且让我们来试试看,双击Neolite的桌面快捷方式进入主界面,在Executable
File对话框中输入需要压缩的文件名,该文件可以是EXE、DLL、OCX或VBX格式,这里以ACDSee
2.4的主文件ACDSee32.exe为例。然后按下Next按钮,在主界面下方便会出现两个按钮:Compress和Max
Cmp,Compress模式的压缩时间较短但压缩率略低,Max Cmp模式则可对文件进行最大压缩,但压缩时间也稍长一些,而且经Max
Cmp模式压缩过的文件无法再进行反压缩操作。首先,选择普通压缩模式,按下Compress按钮,Neolite便开始为ACDSee“减肥”了,屏幕上最后显示出的压缩率为52.9%,再用Max
Cmp模式压一次,结果为53.0%,似乎并没有太大的提高。不过对程序员而言,使用Max
Cmp模式进行压缩更重要的意义在于可以有效地防止他人对源代码的反编译。对采用普通压缩模式压缩过的文件,只要在Neolite的Restore
Compressed Executable标签下点击Restore Executable,即可立即将文件恢复原貌。
在Neolite安装目录中还包含了一个Neolitecli程序,该程序可提供用户命令行操作模式,其功能与GUI界面的Neolite完全一样。Neolite的最新版本为2.00版,下载地址为
ftp://free.digitalriver.com/pub/demo0013/NeoLte20.exe,文件大小仅有615
KB,演示版的功能没有任何限制,只是压缩过的文件每次运行前都会出现一个DEMO版本提示窗。
Aspack的功能和Neolite大同小异,它同时提供了包括中文GB码和中文BIG
5码在内的14种语言支持,因此极易上手,其操作方法在此就不赘述了。与Neolite一样,Aspack也支持命令行操作,不过它只提供了一种压缩模式,并且无法对压缩后的文件进行逆向操作。除了EXE、DLL与OCX文件外,Aspack还可对Delphi的DPL、BPL运行库文件进行压缩。Aspack
1.08.02的共享版可以从
http://www.entechtaiwan.com/files/aspack1082.exe下载,文件大小为375
KB,你只能免费试用30天,试用期内无任何限制(图二)。
通常一个可执行文件都包括两部分:Program(程序体)和Resouses(各种内部资源,如程序图标、位图、额外数据等),Neolite和Aspack在对这两部分内容进行压缩的同时,自动在被压缩文件的文件头嵌入一小段解压代码,所以即便你删除了Neolite或Aspack,也丝毫不会影响这些程序的运行。当被压缩文件执行时,解压代码将首先被执行,并在内存中还原、运行被压缩的源文件。由于解压代码十分精简高效(Aspack的解压代码尚不足1
KB),加上源文件压缩之后的尺寸变小、磁盘读取速度加快,因此经过Neolite或Aspack压缩过的程序,启动速度不但不会减慢反而会更快,只不过在目前的机器配置下,这点微小的速度差异一般很难察觉而已。不过要注意的是,对那些文件长度小于300
KB,源代码十分精简、内部资源调用也极少的小程序,用Neolite或Aspack压缩的效果并不十分明显,有时还可能增大文件长度。
最后,就以ACDSee
2.4的程序文件ACDSee32.exe为例,对Neolite、Aspack和Winzip压缩EXE文件的表现做一个简单比较,让我们看看究竟谁是EXE文件压缩的“王中王”。