admin管理员组

文章数量:1596327

2024年3月4日发(作者:)

龙源期刊网

病毒加壳是怎么回事?

作者:香 草

来源:《电脑爱好者》2008年第22期

“电脑中毒了!杀毒软件又没发现”,“哎,肯定是病毒加壳了。”我们时常听到这样的对话。原来病毒穿了“马甲”,杀毒软件就不容易认出来了。这也就是我们时常说到的“加壳”,虽然杀毒软件无法检测病毒的原因有很多种,但病毒加壳无疑是其中一条很重要的原因。今天我们就全程解读下穿“马甲”的伎俩。

有话说在前头

为什么要加壳?

1.编好软件后会编译成EXE可执行文件,有些作者想把其中的一些版权信息保护起来,不想让别人随便改动,如作者的姓名等,当然,也为了保护软件不被破解,通常都是采用加壳来进行保护;

2.还有的作者需要把程序搞得小一点,方便使用。这就需要用到一些软件,然后将EXE可执行文件压缩。

3.在黑客界给木马等软件加壳以躲避杀毒软件。实现上述功能的这些软件也称为壳软件。

什么是加壳?

所谓加壳,是一种通过一系列数学运算,将可执行程序文件或动态链接库文件的编码进行改变(目前还有一些加壳软件可以压缩、加密驱动程序),以达到缩小文件体积或加密程序编码的目的。这类似于WINZIP的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。解压原理是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。当被加壳的程序运行时,外壳程序先被执行,然后由这个外壳程序负责将用户原有的程序在内存中解压缩,并把控制权交还给脱壳后的真正程序。一切操作自动完成,用户不知道也无需知道壳程序是如何运行的。一般情况下,加壳程序和未加壳程序的运行结果是一样的。

什么是加花

龙源期刊网

加壳技术是一种类似知识产权保护的工具,它保护了程序但又掩盖了程序本身,因为改变了程序原来的形态,所以起到了迷惑杀毒软件的效果,时常被病毒利用来隐蔽自己。

而加花就是指在程序代码中添加一些无意义的代码,例如程序中有个数据为“20”,加花则将它改为“20+1-1”,虽然值没有改变,但是程序本身已经改变。现在的杀毒软件对病毒程序的查杀是根据病毒程序本身的一段代码为识别特征。 故加花和加壳修改了病毒文件,本身检验码会改变,以此躲过杀毒软件的查杀。

小提示

虽然RAR和ZIP的效果和加壳很相似,但RAR和ZIP都是压缩软件不是加“壳”工具,它们解压时需要进行磁盘读写,“壳”的解压缩是直接在内存中进行的,在用RAR或者ZIP压缩一个病毒在解压缩时杀毒软件肯定会发现,而用加“壳”手段封装老木马,能发现的杀毒软件没几个了。

现身说法体验加壳的用处

说了这么多,你肯定想知道加壳的实际作用吧!那我们就来看一个简单的加壳案例:

某程序爱好者小菲编写了一个(下载地址:/cfan/200822/,快车代码:CF0822DRYJ01)的程序捆绑器,由于其具备了将多个软件压缩到一起同时运行的特点,被很多杀毒软件误认为是病毒程序,程序作者非常郁闷。苦恼之际忽然灵光一现:“可以采用加壳来改变一下,让杀毒软件不认为此程序为病毒。”于是小菲上网随开始搜索关于加壳的技术,终于选到找到一个操作简单的加壳工具——ASProtect(下载地址:/cfan/200822/,快车代码:CF0822DRYJ02),将进行加壳处理。

1运行ASProtect,在“应用程序名称”中输入名称,然后指定要保护的文件的路径和输出文件路径,在“保护选项”中选资源保护、反调试保护、保护原始入口、效验保护等选项(见图1),再在“模式”选项中添加一个模式将其激活,然后单击上面的闪电图标,执行“开始保护”,生成新的程序。这时的程序就从58K变为84K了。

2完成加壳后,杀毒软件依旧认为程序为病毒软件,小菲只能再进行加花处理,将程序代码进行变更,代码变化前后对比如下:

加花前:

龙源期刊网

Dim intOpMode, blnQuiet, strOutputFile, objOutputFile, debug_on, timewmi_on

Dim f_Used, s_Used, t_Used, e_Used, g_Used, r_used

加花后:

Dim%20intOpMode%2C%20blnQuiet%2C%20strOutputFile%2C%20objOutputFile%2C%20debug_on%2C%20timewmi_on%0D%0A%20%20%20%20Dim%20f_Used%2C%20s_Used%2C%20t_Used%2C%20e_Used%2C%20g_Used%2C%20r_used

3完成这些操作后,再次开启杀毒软件,提示程序正常。

(1)

龙源期刊网

(2)

(3)

见招拆招如何对付病毒的壳

我们在杀毒时经常会发现一些加壳的EXE病毒,由于病毒进行过加壳处理,导致杀毒软件无法查杀病毒,这时最保险的方法就是给他们手工脱壳了,下面我们用实例来具体展示一下这个过程。本实例中用到的所有工具都可以从/cfan/200822/下载到,快车代码:CF0822DRYJ03。

1首先利用侦测壳工具来检测病毒加了那种壳。运行PE-SCAN打开病毒程序,经过软件分析后,我们发现无法知道病毒的加壳方式(见图2)。

龙源期刊网

2运行实验工具包中的oep,单击“File(文件)”打开工具包中的“”,然后单击“OEP”按钮,“”被运行,并弹出一个显示为“0040594C”的窗口,这就是入口点了。

3运行,依次选择“文件→打开”按钮找到并选中“”,然后再依次单击“调试→运行”,然后在下方的“Command”窗口中输入“bpx 0040594C”,之后会弹出一个窗口,单击“确定”,之后在调试菜单下选择“运行”或“重新开始”。这时先不要退出“”,在你存放整个slgjb文件的同级目录下会找到“”。这个程序目前还不能运行,因为它的import表(引入表,用于记录该EXE文件调用的DLL文件的相关信息)是被加密的。

4运行ImportREC目录中汉化版文件里的EXE文件,在下拉别表中会看到新生成的“”,单击下方的“修复转存文件”(见图3)。至此,病毒的壳被完全剔除,可以关闭所有窗口了。使用杀毒软件对病毒体“”进行扫描,就可以发现病毒了。

本文标签: 程序文件加壳病毒保护