软件脱壳

软件脱壳

计算机科学技术术语
软件脱壳,顾名思义,就是对软件加壳的逆操作,把软件上存在的壳去掉。在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。[1]
    中文名:软件脱壳 外文名: 所属学科: 英文名:software decorticate 领域:计算机科学技术 逆操作:软件加壳 词语定义:把软件上存在的壳去掉

矛与盾

软件的保护与破解

可执行文件加密(加壳)是诸多软件保护方法中的一种。在上个世纪90年代后期(大约是1995-1999年其间)加壳方式的软件保护与破解的优势经历了交替上升、彼消此长的过程。

保护一方和破解一方基本上都需要阅读DOS中断21和中断10的相关部分,深入的了解了计算机软件的运行机制。软件保护经历了简单的加壳、内外结合、迷宫技术等过程。破解方使用SoftIce等工具进行跟踪,从单机单步跟踪分析到双机比较运行等方式进行破解的过程。

其间也曾出现过一些破解工具,但是复杂的软件保护方法(高强度的软件加密),还需有破解高手进行长时间的手工劳动,才能部分破解。

随着软件保护产品(软件狗、加密锁)硬件处理能力的提高,软件保护越来越依赖高性能的硬件及高强度的加密算法。软件保护和破解的个人英雄主义的色彩逐渐褪去了,依靠个人的能力支撑一个行业的时代也离我们逐渐远去了。

壳的概念

简介

首先我想大家应该先明白“壳”的概念。在自然界中,我想大家对壳这东西应该都不会陌生了,植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。

发展

最早提出“壳”这个概念的,据我所知,应该是当年推出脱壳软件RCOPY3的作者熊焰先生。在几年前的DOS时代,“壳”一般都是指磁盘加密软件的段加密程序,可能是那时候的加密软件还刚起步不久吧,所以大多数的加密软件(加壳软件)所生成的“成品”在“壳”和需要加密的程序之间总有一条比较明显的“分界线”。有经验的人可以在跟踪软件的运行以后找出这条分界线来,至于这样有什么用这个问题,就不用我多说了。但毕竟在当时,甚至现在这样的人也不是很多,所以当RCOPY3这个可以很容易就找出“分界线”,并可以方便的去掉“壳”的软件推出以后,立即就受到了很多人的注意。

相关评论

有人评价,在当时来说,的确是有很多全新的构思,单内存生成EXE可执行文件这项,就应该是世界首创了。但它的思路在程序的表现上还有很多可以改进的地方(虽然后来出现了可以加强其功力的RO97),这个想法也在后来和作者的面谈中得到了证实。在这以后,同类型的软件想雨后春笋一般冒出来,记得住名字的就有:UNKEY、MSCOPY、UNALL....等等,但很多的软件都把磁盘解密当成了主攻方向,忽略了其它方面,当然这也为以后的“密界克星”“解密机器”等软件打下了基础

技术发展

脱壳技术的进步促进、推动了加壳技术的发展,在这种外部环境的催生下,各种加壳脱壳的软件也如雨后春笋般出现。LOCK95和BITLOK等所谓的“壳中带籽”加密程序纷纷出笼,真是各出奇谋,把小小的软盘也折腾的够辛苦的了。正在国内的加壳软件和脱壳软件较量得正火红的时候,国外的“壳”类软件早已经发展到像LZEXE之类的压缩壳了。这类软件说穿了其实就是一个标准的加壳软件,它把EXE文件压缩了以后,再在文件上加上一层在软件被执行的时候自动把文件解压缩的“壳”来达到压缩EXE文件的目的。接着,这类软件也越来越多,PKEXE、AINEXE、UCEXE和后来被很多人认识的WWPACK都属于这类软件,但奇怪的是,当时我看不到一个国产的同类软件。

过了一段时间,可能是国外淘汰了磁盘加密转向使用软件序列号的加密方法吧,保护EXE文件不被动态跟踪和静态反编译就显得非常重要了。所以专门实现这样功能的加壳程序便诞生了。MESS、CRACKSTOP、HACKSTOP、TRAP、UPS等等都是比较有名气的本类软件代表,当然,还有到现在还是数一数二的,由台湾同胞所写的FSE。其实以我的观点来看,这样的软件才能算是正宗的加壳软件。

在以上这些加壳软件的不断升级较劲中,很多软件都把比较“极端”技术用了上去,因为在这个时候DOS已经可以说是给众高手们玩弄在股掌之间了,什么保护模式、反SICE、逆指令等等。相对来说,在那段时间里发表的很多国外脱壳程序,根本就不能对付这么多的加壳大军,什么UPC、TEU等等都纷纷成为必防的对象,成绩比较理想的就只有CUP386了,反观国内,这段时间里也没了这方面的“矛盾斗争”。加壳软件门挥军直捣各处要岗重地,直到在中国遇到了TR这个铜墙铁壁以后,才纷纷败下阵来各谋对策,但这已经是一年多以后的事情了。我常想,如果TR能早两年“出生”的话,成就肯定比现在大得多,甚至盖过SICE也有可能。TR发表的时候WIN95的流行已经成为事实,DOS还有多少的空间,大家心里都清楚。但话又说回来,TR的确是个好软件,比起当年的RCOPY3有过之而无不及,同时也证明了我们中国的CRACK实力(虽然有点过时)。这个时候,前面提到过的FSE凭着强劲的实力也渐渐的浮出了水面,独领风骚。其时已经是1997年年底了,我也走完了学生“旅程”。工作后在CFIDO的CRACK区认识了Ding-Boy,不久CRACK区关了,我从此迷上了INTERNET,并于98年6月建起了一个专门介绍“壳”的站台。在这段时间里,各种“壳”类软件也在不段的升级换代,但都没什么太大的进展,差不多就是TR和众加壳软件的版本数字之争而已。

技术革新

1998年8月,一个名为UNSEC(揭秘)的脱壳软件发表了,它号称可以脱掉98年8月以前发表的所有壳。我测试之后,觉得并没传闻中的那么厉害,特别是兼容性更是令我不想再碰它。Ding-Boy给这个软件的作者提了很多建议,但寄去的EMIAL有如泥牛入海,可能是一怒之下吧,不久Ding-Boy的BW(冲击波)就诞生了。这个使用内存一次定位生成EXE文件(后来放弃了)的脱壳软件,在我的站台公开后,得到了很多朋友们的肯定。要知道,从RCOPY3开始,绝大部分的脱壳软件都是要两次运行目标程序来确定EXE的重定位数据的。BW的这一特点虽然有兼容性的问题,但也树立了自己的风格、特色。

经过几个月的改善,BW升级到了2.0版本,这个版本的推出可以说是BW的转折点,因为它已经是一个成熟、稳定脱壳软件了,它可以对付当时(现在)大多数的壳,包括当时最新的FSE0.6等。更重要的是这个版本把选择壳的和软件“分界线”这个最令新手头疼的步骤简化到不能再简化的地步,使更多的朋友接受了它。另外,能加强BW功力的CI模式也是其它脱壳软件没有的东西。BW发表了最新的2.5BETA2版本,增强了一些方面的功能,因它竟然可以脱掉号称最厉害的磁盘加密工具LOCKKING2.0的加密壳,因而进一步奠定了它在“脱壳界”的地位。说到最新,就不能不提GTR、LTR、EDUMP、ADUMP、UPS、UPX、APACK这几个国外的好软件了,它们每个都有自己的特色,可以说都是当今各类“壳”中的最新代表了。

技术演变

其他技术发展

由于WINDOWS3.1只是基于DOS下的一个图形外壳,所以在这个平台下的“壳”类软件很少,见过的就只有像PACKWIN等几个有限的压缩工具,终难成气候。

可能MICROSOFT保留了WIN95的很多技术上的秘密吧,所以即便是WIN95已经推出了3年多的时间,也没见过在其上面运行的“壳”类软件。直到98年的中期,这样的软件才迟迟的出现,而这个时候WIN98也发表了有一段日子了。应该是有DOS下的经验吧,这类的软件不发表由自可,一发表就一大批地的冲了出来。先是加壳类的软件如:BJFNT、PELOCKNT等,它们的出现,使暴露了3年多的WIN95下的PE格式EXE文件得到了很好的保护。

大家都应该知道现在很多WIN95下的软件都是用注册码的方法来区分、确定合法与非法用户的吧,有了这类加壳软件,这种注册方法的安全性提高了不少,如果大家也有自己编的WIN95程序,就一定要多留意一下本类软件了。接着出现的就是压缩软件了,因为WIN95下运行的EXE文件“体积”一般都比较大,所以它的实用价值比起DOS下的压缩软件要大很多,这类的软件也很多,早些时候的VBOX、PEPACK、PETITE和最近才发表的ASPACK、UPX都是其中的佼佼者。在DOS下很流行的压缩软件WWPACK的作者也推出了对应WIN95版本的WWPACK32,由于性能并不是十分的突出,所以用的人也不太多。由于压缩软件其实也是间接给软件加了壳,所以用它们来处理EXE也是很多软件作者喜欢做的事情,最近新发表的很多软件里都可以看到这些加壳、加压缩软件的名字了。

有加壳就一定会有脱壳的,在WIN95下当然也不例外,但由于编这类软件比编加壳软件要难得多,所以到目前为止,我认为就只有PROCDUMP这个软件能称为通用脱壳软件了,它可以对付现在大多数的加壳、压缩软件所加的壳,的确是一个难得的精品。其它的脱壳软件多是专门针对某某加壳软件而编,虽然针对性强、效果好,但收集麻烦,而且这样的脱壳软件也不多。前些时候TR作者也顺应潮流发表了TR的WIN95版本:TRW,由现在的版本来看可以对付的壳还不多,有待改进。

BW的作者Ding-Boy最新发表了一个WIN95的EXE加壳软件DBPE。虽然它还不太成熟,但它可以为软件加上使用日期限制这个功能是其它加壳软件所没有的,或者以后的加壳软件真的会是像他说的那样可以:加壳和压缩并重、并施;随意加使用日期;加上注册码;加软件狗(磁盘)保护;加硬件序列号判别。

相关信息

作者编好软件后,编译成exe可执行文件有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名等需要把程序搞的小一点,从而方便使用。

于是,需要用到一些软件,他们能将exe可执行文件压缩,实现上述两个功能,这些软件称为加壳软件或压缩软件。

它不同于一般的winzip,winrar等压缩软件。

它是压缩exe可执行文件的,压缩后的文件可以直接运行。

加壳软件

最常见的加壳软件ASPACK,UPX,PEcompact。

不常用的加壳软件WWPACK32;PE-PACK;PETITE;NEOLITE。

破壳方法

侦测壳和软件所用编写语言的软件

侦测壳的软件fileinfo.exe简称fi.exe

使用方法

第一种:待侦测壳的软件和fi.exe位于同一目录下,执行windows起始菜单的运行,键入fiaa

第二种:待侦测壳的软件和fi.exe位于同一目录下,将aa的图标拖到fi的图标上侦测壳和软件所用编写语言的软件language.exe(两个功能合为一体,很棒)推荐language2000中文版,我的主页可下载

傻瓜式软件,运行后选取待侦测壳的软件即可打开。

图中所示软件cr-xxzs.exe是用VisualBasic6.0编的,upx加壳。

软件常用编写语言Delphi,VisualBasic(VB)---最难破,VisualC(VC)。

相关词条

相关搜索

其它词条