恶意软件清除方法及系统转让专利

申请号 : CN200910165215.8

文献号 : CN101996287B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 戴士尧张瑜真吴建兴林志鸿黄彦男郭斯彦

申请人 : 财团法人资讯工业策进会

摘要 :

一种恶意软件清除方法及系统。在本发明中,建立关联图,以将操作系统的程序及其相关元件进行相关联。当满足预设条件时,对关联图进行节点标示动作,使得恶意程序及其相关的节点被标示上第一标记,正常程序及其相关的节点被标示上第二标记,之后再对同时被标示上双标记的节点进行筛选,使得各节点仅标示上第一标记或第二标记。最后,清除被标示上第一标记的节点所对应的程序及元件。

权利要求 :

1.一种恶意软件的清除方法,包括:

建立关联图,所述关联图包括多个节点,所述节点分别对应至操作系统的多个程序及与所述程序在执行时所使用的元件,其中所述节点之间的关联是依据所述程序与所述元件之间的关系而建立,每一所述节点包括输出关联及进入关联两者或其中之一,而所述输出关联代表每一所述节点对应的所述程序或所述元件使用其它所述程序及所述元件其中之一,所述进入关联代表每一所述节点对应的所述程序或所述元件被其它所述程序及所述元件其中之一所使用;

当满足预设条件时,对所述关联图进行节点标示动作,其中所述节点标示动作包括沿着所述节点的所述输出关联及所述进入关联两者或其中之一进行标示,所述节点标示动作还包括:将恶意程序的节点及其相关联的节点标示上第一标记;

将未标示上所述第一标记的正常程序的节点及其相关联的节点标示上第二标记;以及,针对同时标示上所述第一标记与所述第二标记的节点进行筛选,使得各所述节点仅标示上所述第一标记与所述第二标记其中之一;以及,清除被标示上所述第一标记的节点所对应的程序及元件。

2.根据权利要求1所述的恶意软件的清除方法,其中所述节点标示动作是依据节点标示规则,判断各所述节点的标记是否能够沿着所述输出关联及所述进入关联两者或其中之一进行标示,以决定所述节点的标记是否继续扩散至其相关联的节点来进行标示。

3.根据权利要求1所述的恶意软件的清除方法,其中针对同时标示上所述第一标记与所述第二标记的节点进行筛选的步骤包括:当所述节点其中之一被同时标示上所述第一标记与所述第二标记时,判断所述节点是否存在于白名单中,以重新将所述节点标示为所述第一标记或所述第二标记。

4.根据权利要求3所述的恶意软件的清除方法,其中判断同时被标示上所述第一标记与所述第二标记的节点是否存在于所述白名单的步骤包括:若所述节点不存在于所述白名单中,则重新将所述节点标示为所述第一标记,并且将与所述节点相关联的节点标示上所述第一标记;以及,若所述节点存在于所述白名单中,则对所述节点进行检验动作以判断所述节点是否受到所述恶意程序的感染。

5.根据权利要求4所述的恶意软件的清除方法,其中所述检验动作包括:通过散列算法来检验所述节点所对应的程序或元件是否遭到所述恶意程序的感染;

当所述节点所对应的程序或元件并未受到所述恶意程序的感染,重新将所述节点标示为所述第二标记;

当所述节点所对应的程序或元件受到所述恶意程序的感染,利用回复机制来复原所述节点所对应的程序或元件;以及重新将所述节点标示为所述第二标记。

6.根据权利要求1所述的恶意软件的清除方法,其中所述预设条件为从所述程序中搜寻到所述恶意程序,并且所述恶意程序欲开始危害所述操作系统。

7.根据权利要求1所述的恶意软件的清除方法,其中所述预设条件为从所述程序中搜寻到所述恶意程序,并且所述恶意程序的节点上产生所述进入关联。

8.一种恶意软件的清除系统,包括:

关联图建立模组,建立关联图,所述关联图包括多个节点,所述节点分别对应操作系统的多个程序及与所述程序在执行时所使用的元件,其中所述节点之间的关联是依据所述程序与所述元件之间的关系而建立,每一所述节点包括输出关联及进入关联两者或其中之一,而所述输出关联代表每一所述节点对应的所述程序或所述元件使用其它所述程序及所述元件其中之一,所述进入关联代表每一所述节点对应的所述程序或所述元件被其它所述程序及所述元件其中之一所使用;

恶意软件侦测模组,在所述操作系统中侦测恶意程序;以及

可疑物件区别模组;

其中,当满足预设条件时,通过所述可疑物件区别模组对所述关联图进行节点标示动作,所述节点标示动作包括沿着所述节点的所述输出关联及所述进入关联两者或其中之一进行标示,所述节点标示动作还包括:将所述恶意程序的节点及其相关联的节点标示上第一标记;将未标示上所述第一标记的正常程序的节点及其相关联的节点标示上第二标记;以及针对同时标示上所述第一标记与所述第二标记的节点进行筛选,使得各所述节点仅标示上所述第一标记与所述第二标记其中之一;

之后,所述可疑物件区别模组清除被标示上所述第一标记的节点所对应的程序及元件。

9.根据权利要求8所述的恶意软件的清除系统,其中所述可疑物件区别模组是依据节点标示规则,判断各所述节点的标记是否能够沿着所述输出关联及所述进入关联两者或其中之一进行标示,以决定所述节点的标记是否继续扩散至其相关联的节点来进行标示。

10.根据权利要求8所述的恶意软件的清除系统,其中所述可疑物件区别模组针对同时标示上所述第一标记与所述第二标记的节点进行筛选的步骤还包括:当所述节点其中之一被同时标示上所述第一标记与所述第二标记时,判断所述节点是否存在于白名单中;

若所述节点不存在于所述白名单中,则重新将所述节点标示为所述第一标记,并且将与所述节点相关联的节点标示为所述第一标记;以及,若所述节点存在于所述白名单中,则对所述节点进行检验动作以判断所述节点是否受到所述恶意程序的感染。

11.根据权利要求10所述的恶意软件的清除系统,其中所述可疑物件区别模组所进行的所述检验动作包括:通过散列算法来检验所述节点所对应的程序或元件是否遭到所述恶意程序的感染;

当所述节点所对应的程序或元件并未受到所述恶意程序的感染,重新将所述节点标示为所述第二标记;

当所述节点所对应的程序或元件受到所述恶意程序的感染,利用回复机制来复原所述节点所对应的程序或元件;以及重新将所述节点标示为所述第二标记。

12.根据权利要求8所述的恶意软件的清除系统,其中所述预设条件为当所述恶意软件侦测模组从所述程序中搜寻到所述恶意程序,并且侦测到所述恶意程序欲开始危害所述操作系统。

13.根据权利要求8所述的恶意软件的清除系统,其中所述预设条件为当所述恶意软件侦测模组从所述程序中搜寻到所述恶意程序,并且在所述关联图中所述恶意程序的节点上产生所述进入关联。

说明书 :

恶意软件清除方法及系统

技术领域

[0001] 本发明是有关于一种清除恶意软件的机制,且特别是有关于利用关联图找出所有与恶意程序相关的程序与元件的恶意软件的清除方法及系统。
[0002] 背景技术
[0003] 计算机信息的发达不仅对社会造成重大影响,也改变人类的生活习惯。人们更是越来越依赖计算机系统来进行各种作业。而当中许多行为是通过因特网来进行,例如浏览网页、收发邮件、网络购物等等。据此,许多不肖份子为了达成某种企图而制造出恶意软件(Malicious Software,Ma1ware)来对计算机系统进行入侵。倘若使用者的计算机系统所连线的另一端为恶意网站,其计算机系统便会遭受到恶意软件的入侵。
[0004] 由于恶意软件会威胁计算机系统上机密资讯的安全或是对计算机系统造成伤害,因此任何使用计算机系统或网络的机关团体,无不耗费人力、物力来阻止恶意软件的入侵。其中多半是利用防毒软件来进行扫毒的动作。一般而言,防毒软件公司会对这些恶意软件进行捕获,并分析出这些恶意软件所对应的特征码,以提供扫毒软件在发现恶意软件入侵时将这些具有特征码的恶意软件移除。
[0005] 然而,恶意软件主要有两种元件,一个是负责攻击计算机系统的攻击元件,另一个是负责幕后操控与维护这些恶意程序的幕后操控元件(Instigator)。由于幕后操控元件仅在入侵的计算机系统中负责维护的工作,其并不直接参与攻击计算机系统,以致于防毒软件公司并不容易发现它的存在,也就不可能归纳出幕后操控元件的特征码,因此无法顺利的将幕后操控元件清除干净。当攻击元件被扫毒软件发现并删除后,幕后操控元件仍可通过复制产生或下载新的攻击元件,持续地窃取被入侵地计算机系统的机敏信息,造成企业或个人在不知不觉下持续外泄具有价值的资料,或持续破坏计算机系统,导致财产及声誉的损失。

发明内容

[0006] 本发明提供一种恶意软件的清除方法,无论计算机系统尚未被恶意软件入侵,或已被入侵,都能够找出与恶意软件相关的元件并将其清除。
[0007] 本发明提供一种恶意软件的清除系统,通过关联图来找出幕后主控元件,据此可将恶意软件完全移除。
[0008] 本发明提出一种恶意软件的清除方法。首先,建立关联图,此关联图包括多个节点,这些节点分别对应至操作系统的程序(process)及与这些程序相关的元件,而这些节点之间的关联是依据这些程序与元件之间的关系所建立。之后,当满足预设条件时,对关联图进行节点标示动作。上述节点标示动作包括沿着节点的输出关联及进入关联两者或其中之一进行标示。另外,节点标示动作更包括:将恶意程序的节点及其相关联的节点标示上第一标记;接着,将未标示上第一标记的正常程序的节点及其相关联的节点标示上第二标记;之后,针对同时标示上第一标记与第二标记的节点进行筛选,使得各节点仅标示上第一标记与第二标记其中之一。最后,便可清除被标示上第一标记的节点所对应的程序及元件。 [0009] 另外,本发明提出一种恶意软件的清除系统,其包括关联图建立模组、恶意软件侦测模组以及可疑物件区别模组。关联图建立模组是用以建立一关联图。在此,关联图包括多个节点,这些节点分别对应操作系统的多个程序及与这些程序相关的元件,而这些节点之间的关联是依据 程序与元件之间的关系而建立。恶意软件侦测模组是用以在操作系统中侦测恶意程序。当满足预设条件时,通过可疑物件区别模组对关联图进行节点标示动作。
上述节点标示动作包括沿着节点的输出关联及进入关联两者或其中之一进行标示。具体而言,节点标示动作包括将恶意程序的节点及其相关联的节点标示上第一标记;将未标示上第一标记的正常程序的节点及其相关联的节点标示上第二标记;以及针对同时标示上第一标记与第二标记的节点进行筛选,使得各节点仅标示上第一标记与第二标记其中之一。而可疑物件区别模组在完成节点标示动作之后,便会将被标示上第一标记的节点所对应的程序及元件清除。
[0010] 在本发明一实施例中,上述节点标示动作是依据一节点标示规则,判断各节点的标记是否能够沿着输出关联及进入关联两者或其中之一进行标示,以决定节点的标记是否继续扩散至其相关联的节点来进行标示。
[0011] 在本发明一实施例中,上述针对同时标示上第一标记与第二标记的节点进行筛选的步骤包括:当其中一个节点被同时标示上第一标记与第二标记时,判断此节点是否存在于白名单中,以重新将此节点标示为第一标记或第二标记。具体而言,若节点不存在于白名单中,则重新将此节点标示为第一标记,并且将与此节点相关联的节点标示上第一标记。反之,若节点存在于白名单中,则对此节点进行检验动作以判断其是否受到恶意程序的感染。上述检验动作是通过一散列算法来检验节点所对应的程序或元件是否遭到恶意程序的感染。当此节点所对应的程序或元件并未受到恶意程序的感染,重新将此节点标示为第二标记;而当此节点所对应的程序或元件受到恶意程序的感染,利用一回复机制来复原此节点所对应的程序或元件。而在利用回复机制来复原节点所对应的程序或元件之后,重新将此节点标示为第二标记。
[0012] 在本发明一实施例中,上述预设条件为从这些程序中搜寻到恶意程 序,并且恶意程序欲开始危害操作系统。或者,预设条件为自这些程序中搜寻到恶意程序,并且此恶意程序的节点上产生了进入关联。
[0013] 本发明另提供一种计算机程序产品,其包括多个程序指令,而这些程式指令用以载入计算机系统中并且使得计算机系统执行上述恶意软件的清除方法。
[0014] 本发明还提供一种计算机可读取存储媒体,其储存一计算机程序。上述计算机程序用以载入至计算机系统中并且使得计算机系统执行上述的恶意软件的清除方法。 [0015] 基于上述,本发明是根据操作系统中程序的行为,建立所有程序与元件之间的关联图,通过做为找寻被恶意程序所感染之元件的依据。另外,在关联图中进行节点标示动作,不仅能将与恶意程序相关的元件找出来,还能进一步找出幕后操控元件,而能够完全移除恶意软件。
[0016] 为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。

附图说明

[0017] 图1是本发明一实施例的恶意软件的清除方法的流程图;
[0018] 图2是本发明一实施例的拦截系统调用所得到的部分数据的示意图; [0019] 图3A与图3B是依照图2所建立的关联图的示意图;
[0020] 图4是本发明一实施例的关联图的示意图;
[0021] 图5是本发明一实施例的节点标示动作的流程图;
[0022] 图6A及图6B是本发明一实施例的节点标示的示意图;
[0023] 图7是本发明一实施例的筛选同时被标示上双标记的节点的流程图; [0024] 图8是本发明一实施例的恶意软件清除系统的方块图。
[0025] 主要元件符号说明
[0026] 800:恶意软件清除系统;
[0027] 801:可疑物件区别模组;
[0028] 803:关联图建立模组;
[0029] 805:恶意软件侦测模组;
[0030] S105~S115:本发明一实施例的恶意软件的清除方法各步骤;
[0031] S505~515:本发明一实施例的节点标示动作各步骤;
[0032] S705~S735:本发明一实施例的筛选被标示上双标记的节点各步骤。 具体实施方式
[0033] 图1是本发明一实施例的恶意软件的清除方法的流程图。请参照图1,首先,在步骤S105中,建立关联图。在此,关联图记录了操作系统所执行的程序与相关元件之间彼此的关联,因此可完整得知与各个程序有关的所有元件。各程序的相关元件例如可执行文件(file)、动态链接程序库(Dynamic Link Library,DLL)、子程序(sub process)、网络连线、操作系统设定等。上述操作系统由一计算机系统执行,上述的各程序相关元件存在于此计算机系统的存储器与硬盘等储存装置之中。
[0034] 一般而言,程序与操作系统之间的沟通是通过系统调用(systemcall)来使用操作系统提供的资源。例如,开启文件要通过相关的系统调用,否则便无法开启文件。同样地,恶意程序亦要先通过系统调用才能够危害计算机。而所谓系统调用是用来提供程序与操作系统之间的界面,大致可分为以下五类:过程控制(process control)、文件管理(file management)、设备管理(device management)、信息维护(information maintenance)以及通信(communication)。据此,拦截系统调用便能够得知目前程序的行为,而拦截系统调用的技术例如为 Heng Yin及Dawn Song于2007年在ACM计算机与通信安全会议(Association for Computing Machinery Conference on Computer andCommunications Security)所提出的Panorama:Capturing System-wideInformation Flow for Malware Detection and Analysis所述。
[0035] 本实施例拦截每一个程序的系统调用,以监控每一个程序在计算机系统的行为。当此程序与其他元件有关联时,便在关联图上记录下此关联。在此,上述关联图包括多个节点,这些节点分别对应操作系统的多个程序及与这些程序相关的元件,而这些节点之间的关联是依据程序与元件之间的关系而建立。
[0036] 以下便举例来说明建立关联图的方法。图2是本发明一实施例的拦截系统调用所得到的部分数据的示意图。图3A与图3B是依照图2所建立的关联图的示意图。请参照图2、图3A与图3B,图2所示为拦截系统调用所得到的程序4的部分数据,而图3A与图3B则是依据图2所建立的关联图,其中节点P4为程序4所对应的节点。
[0037] 在图2中,第一行LoadLibraryA与KERNEL32.DLL是代表载入KERNEL 32.DLL这个DLL。此时,如图3A所示,节点P4产生一输出关联而与节点DLL相关联,节点DLL即表示KERNEL 32.DLL。另外,第二行GetProcAddress与CreateProcessA代表从KERNEL32.DLL取得CreateProcessA这个指令的位址。由于CreateProcessA指令位于KERNEL32.DLL中,因此关联图的建立亦如同图3A所示(表示不需再建立另一条关联)。此外,第三行的数据与第二行数据相似,即CopyFileA指令位于KERNEL32.DLL中,因此关联图的建立亦如同图3A所示。而第四行CreateProcessA与FileName代表执行了子程序。此时,关联图中的元件关系则如图3B所示,节点P4产生一输出关联而与节点SP相关联,节点SP即表示上述子程序。
[0038] 基于上述,根据拦截所有程序的系统调用的内容,可将所有相关连的程序描绘出彼此的关联性。为了更清楚地描述关联图的建立,以下再举一实施例来说明。图4是本发明一实施例的关联图的示意图。请参照图4,在此,假设拦截程序1、2、3、4的系统调用,且各程序所对应的节点分别为节点P1、P2、P 3、P4。
[0039] 当操作系统执行一个程序时,在关联图中便会建立与此程序的相关元件所对应的节点。例如,程序1是由可执行文件所执行的,于是在节点P1中产生一进入关联以与节点F1相关联。之后,当操作系统执行程序2时,除了可执行文件以外尚需要外部DLL的支援,据此在关联图中,由节点P2建立一条进入关联与节点F2相关联,并且建立一条输出关联与节点NT.DLL相关联。以此类推,程序3、4亦如此。
[0040] 在图4中,由于程序4登记在操作系统的ASEP(Auto Start Extension Point,自动启动延伸点)之中,因此每次开机时,节点P4对应的程序4会自动被启动,也因此图4中有一个关联自节点ASEP进入节点P4。此外,程序4亦执行了多个子程序(SP)、使用网络连线(L),并且载入了多个DLL。
[0041] 值得一提的是,在建立关联图的过程中,恶意程序监控程序也会同时侦测是否存在恶意程序,若侦测到恶意程序时会立即在关联图中标示出来。恶意程序监控程序可以使用任何一种现有技术来侦测恶意程序,例如使用特征码来侦测。倘若侦测到任何一个程序曾经透过任何技巧来判断恶意程序是否还依然存活,则此程序则可能为用来监控恶意程序的幕后操控元件(Instigator),进而在关联图中记录此一程序与恶意程序之间的关联。 [0042] 在此,假设程序4为恶意程序,且程序1曾经侦测过程序4是否还依然存活。据此,在图4中,节点P4会产生一进入关联而与节点P1相关联。
[0043] 接着,返回图1,在建立关联图之后,如步骤S110所示,当计算机系统满足一预设条件时,便会开始对关联图中的各节点进行节点标示动作。举例来说,当恶意程序欲开始危害操作系统时,则停止建立关联图而开始节点标示动作。又例如,当恶意程序在关联图中被标示出来,且恶意程序的节点上产生了进入关联时(例如图4中节点P1关联到节点P4),则停止建立关联图而开始节点标示动作。
[0044] 上述恶意程序危害操作系统的行为可事先针对恶意程序来进行归纳,以得知恶意程序可以进行如何的行为来危害操作系统。在此仅为举例说明,并不以此为限。 [0045] 另外,节点标示动作是沿着各节点的进入关联或是输出关联来进行标示。在此,每个节点依据其类别会有不同的节点标示规则,而依据节点标示规则来判断各节点的标记是否能够沿着输出关联或进入关联进行标示,据以决定节点的标记是否继续扩散至其相关联的节点来进行标示。
[0046] 例如,程序的节点标示是沿着其输出关联及进入关联向外进行双向扩散标示。另外,例如DLL的节点标示则仅能由与其相关的节点经由进入关联扩散进来,而无法由DLL节点本身来向外扩散标示。以图4而言,即是由节点P4(或是节点P2或节点P3)扩散标示至节点NT.DLL,之后,便不再由节点NT.DLL向外继续扩散标示。此外,ASEP的节点标示则是双向扩散标示。以图4而言,当从节点P4扩散标示至节点ASEP之后,再由节点ASEP扩散标示至节点File。
[0047] 接着,举一实施例来详细说明步骤S110的流程。图5是本发明一实施例的节点标示动作的流程图。请参照图5,首先,在步骤S505中,将恶意程序的节点及其相关联的节点标示上第一标记。在此,例如通过将节点着色来进行标示。例如,在经由恶意程序侦测技术侦测到恶意程序时,将关联图中恶意程序对应的节点涂上第一颜色,并且根据上述的节点标示规则进行扩散,将与恶意程序的相关元件所对应的节点亦涂上 第一颜色。 [0048] 接着,在步骤S510中,将未标示上第一标记的正常程序的节点标示上第二标记,并且根据上述的节点标示规则进行扩散,将相关联的节点标示上第二标记。例如,将未被着色的正常程序与其相关元件皆标示为第二颜色。
[0049] 之后,在步骤S515中,针对同时标示上第一标记与第二标记的节点进行筛选,使得各节点仅标示上第一标记或第二标记。由于在经过节点标示动作之后,被正常程序及恶意程序所共同使用的元件,其节点可能会同时被标示上第一标记与第二标记,因而需要进一步分析判断此节点要标示为第一标记或是第二标记。
[0050] 以图4为例,图6A及图6B是本发明一实施例的节点标示的示意图。请参照图6A及图6B,当侦测到程序4为恶意程序时,将节点P4标示上第一颜色,并且将程序4的相关元件皆标示上第一颜色,如图6A所示。接着,将未被着色的正常程序2、3与其相关元件对应的节点皆标示为第二颜色。据此,仅将节点P2、P3与其相关节点标示为第二颜色,如图6B所示。
[0051] 值得注意的是,节点P2、节点P3及恶意程序的节点P1皆与节点NT.DLL有所关联。这是因为节点NT.DLL所对应的元件为重要的DLL,而几乎所有的程序都必须载入它。因此,倘若因为节点NT.DLL与节点P4(恶意程序)相关联而遭删除,则计算机系统便无法正常运作。为了避免这种情形产生,在本实施例中,当节点被同时标示上第一标记与第二标记时,便会再进一步去判断此一节点的元件是否被恶意程序所感染。
[0052] 以下举一实施例来详细说明步骤S515的流程。图7是依照本发明一实施例所绘示的筛选同时被标示上双标记的节点的流程图。请参照图7,在步骤S705中,在进行标示之后的节点中,判断是否有节点同时被 标示上第一标记与第二标记。若是,执行步骤S710;若否,则如步骤S735所示,结束节点标示。
[0053] 在步骤S710中,判断此节点是否存在白名单中。这个白名单是预设的,其中记录了操作系统中会被所有程序共同使用的、不可删除的重要元件,例如NT.DLL。一般而言,共用的元件在各个操作系统里面是固定的,所以可以事先将共用元件设定至白名单中。因此,倘若被标示上双标记的节点所对应的元件不存在白名单中,即表示此节点并不会被其他正常程序所使用,则如步骤S715所示,重新将此节点标示为第一标记,并且依据节点标示规则进行扩散,重新将与此节点相关联的节点标示上第一标记,然后重复执行步骤S705。 [0054] 另一方面,倘若被标示上双标记的节点所对应的元件存在于白名单中,表示此节点的元件有可能被恶意程序所感染,之后如步骤S720所示,对此节点进行检验动作以判断此节点是否受到恶意程序的感染。例如,通过散列算法来检验节点所对应的程序或元件是否遭到恶意程序的感染。在此,散列算法例如为信息摘要算法(Message-Digest Algorithm5,MD5)或是安全散列标准(Secure Hash Standard,SHA)算法。通过散列算法来计算共用元件的检查和(checksum),据此与前次的操作系统检查点(checkpoint)所记录的同一元件的检查和进行比对。如果同一元件的前后两个检查和相同,就能确定共用元件没有被恶意程序感染,如果不同就表示共同元件已被感染。
[0055] 一般操作系统具有一检查点机制,以在系统更新之后,将检查点的数据备份下来。据此,可利用前次检查点所储存的元件来判断目前使用的元件是否被感染。 [0056] 接着,若是判断此节点的元件并未受到恶意程序所感染,则如步骤S725所示,重新将此节点标示为第二标记。之后重复执行步骤S705,直至所有节点仅标示第一标记或是第二标记。相反地,若此节点的元件 已受到恶意程序所感染,则如步骤S730所示,利用回复机制来复原此节点所对应的程序或元件。例如,可以重新从数据库中取得一个未感染的元件,或利用网络下载未感染的元件;或者,利用前次检查点所记录的元件来进行复原。之后,返回步骤S725,重新将此节点标示为第二标记,并且重复执行步骤S705,直至所有节点仅标示第一标记或是第二标记。
[0057] 最后,返回图1,在结束节点标示动作之后,如步骤S115所示,在计算机系统的存储器和硬盘等储存装置中,清除仅被标示上第一标记之节点所对应的程序及元件。 [0058] 值得注意的是,恶意程序为了要每次开机都能控制计算机系统,因此恶意程序每次开机会自动执行,而不用经过使用者的同意。例如在ASEP中会有一个特定的关联指向特定的可执行档。因此,当节点ASEP被标示上第一标记时,并不会删除节点ASEP,而是将ASEP里面跟恶意程序相关的设定清除。也就是说,不同节点的清除定义皆不相同,可事先制定清除节点的规定,以做为后续参考依据。
[0059] 另外,本发明另提供一种恶意软件的清除系统。图8是本发明一实施例的恶意软件清除系统的方块图。请参照图8,恶意软件清除系统800包括关联图建立模组803、恶意软件侦测模组805以及可疑物件区别模组801。
[0060] 关联图建立模组803是用以建立一关联图。在此,关联图的建立如上述步骤S105所述,故在此不再赘述。恶意软件侦测模组805是周以在操作系统中侦测恶意程序。可疑物件区别模组801则是在满足一预设条件时,对关联图进行节点标示动作。而节点标示动作如上述步骤S110所述(包括步骤S505~步骤S515以及步骤S705~步骤S735),在此亦不再赘述。而可疑物件区别模组801在完成节点标示动作之后,便会将被标示上第一标记的节点所对应的程序及元件清除,如上述步骤S115 所述。
[0061] 图8的恶意软件清除系统800可以是欲保护的操作系统的一部分,也可以独立于欲保护的操作系统之外。若是操作系统的一部分,则必须修改欲保护的操作系统,将恶意软件清除系统800并入其中。若是独立于欲保护的操作系统之外,可以将恶意软件清除系统800实施为虚拟主机(virtual machine)软件的一部分,使用此虚拟主机软件执行欲保护的操作系统。
[0062] 本发明另提供一种计算机程序产品,其是由多个程序指令,并且这些程序代码段在载入计算机系统中并执行之后,即可完成上述恶意程序的清除方法的步骤。另外,本发明还提供一种计算机可读取存储媒体,以储存一计算机程序,此计算机程序在载入至计算机系统中并执行之后,即可完成上述恶意程序的清除方法的步骤。
[0063] 综上所述,上述恶意软件的清除方法是先建立关联图,通过恶意软件侦测技术将恶意程序对应的节点标示出来,之后再对关联图进行节点标示动作,以得知恶意程序与哪些元件相关。下一步再针对可疑元件执行进一步的检验,以找出是否有元件受到恶意程序的感染,之后再清除掉。据此,在上述实施例中,不仅能找出恶意程序,亦能够找出与恶意程序相关的元件,并且还可找到隐藏的幕后操控元件,以将恶意程序完全移除。即使恶意程序使用乱数产生文件名,在关联图中也会被标示,无所遁形。此外,即便计算机系统已经中毒,亦可在中毒之后再进行部署以清除恶意软件,也就是不论计算机系统是否已遭受恶意软件感染皆能通过上述方法来进行扫毒动作。
[0064] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。