一种宏病毒的检测方法、装置、电子设备及存储介质与流程

文档序号:29413791发布日期:2022-03-26 12:32阅读:281来源:国知局
一种宏病毒的检测方法、装置、电子设备及存储介质与流程

1.本发明涉及计算机安全技术领域,尤其涉及一种宏病毒的检测方法、装置、电子设备及存储介质。


背景技术:

2.宏病毒,是指寄存在数据文件或数据文件模版上,用宏语言编写的恶意指令序列,当用户打开被宏病毒感染的数据文件或者对被宏病毒感染的数据文件进行操作,并启动宏代码时,会将其激活,使其运行,从而给计算机带来安全危害。
3.现有的对宏病毒进行检测的方法为,利用杀毒软件对数据文件进行静态分析,利用复合数据文件格式对数据文件的结构进行分解识别,提取数据文件中所有宏的特征码,将提取的数据文件中所有宏的特征码与病毒库中宏病毒的特征码的进行对比匹配,如果匹配,则将匹配的宏清除。然而,在实际应用中,利用杀毒软件对数据文件进行静态分析对宏病毒进行检测的方法,要求杀毒软件能识别所有数据文件的结构并分析,但是由于不同的应用程序具有不同的数据文件结构,此种方法在实际应用中很难实现,因此现有技术中对宏病毒进行识别的方法存在通用性差这一技术问题。


技术实现要素:

4.有鉴于此,本发明实施例提供一种宏病毒的检测方法、装置、电子设备及存储介质,能够提高宏病毒检测方法的通用性。
5.第一方面,本发明实施例提供一种宏病毒的检测方法,所述方法包括:
6.检测目标文档中是否存在宏代码;
7.若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的列序号与第二非空单元格的列序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一行的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;若所述差值大于预设阈值,则判定所述目标文档中存在宏病毒;
8.或,
9.若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的行序号与第二非空单元格的行序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一列的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;若所述差值大于预设阈值,则判定所述目标文档中存在宏病毒。
10.可选的,所述检测所述目标文档中是否存在宏代码,包括:
11.根据所述目标文档后缀名,判断所述目标文档中是否存在宏代码。
12.可选的,所述检测所述目标文档中是否存在宏代码,包括:
13.利用宏代码提取工具,从所述目标文档中提取宏代码,生成提取结果;
14.基于所述提取结果,判断所述目标文档中是否存在宏代码。
15.可选的,所述在所述目标文档中确定第一非空单元格的列序号与第二非空单元格的列序号的差值,包括:
16.获取第一非空单元格的列序号,检测与所述第一非空单元格间隔一个单元格的第一单元格是否为非空;
17.若第一单元格为非空,则将所述第一单元格确定为第二非空单元格;
18.若第一单元格为空,则检测与所述第一单元格间隔一个单元格的第二单元格是否为非空;所述第二单元格与所述第一非空单元格位于所述第一单元格的两侧;
19.若第二单元格为非空,则将所述第二单元格确定为第二非空单元格;
20.基于所述第一非空单元格的列序号与所述第二非空单元格的列序号,确定两者之间的差值。
21.可选的,所述判定所述目标文档中存在宏病毒之后,所述方法还包括:
22.生成报警信息,并将所述报警信息向用户展示。
23.第二方面,本发明实施例提供一种宏病毒的检测装置,包括:
24.检测模块,用于检测目标文档中是否存在宏代码;
25.第一确定模块,用于若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的列序号与第二非空单元格的列序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一行的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;
26.第一判定模块,用于若所述差值大于预设阈值,则判定所述目标文档中存在宏病毒;
27.或,
28.第二确定模块,用于若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的行序号与第二非空单元格的行序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一列的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;
29.第二判定模块,用于若所述差值大于预设阈值,则判定所述目标文档中存在宏病毒。
30.可选的,所述检测模块具体用于:
31.根据所述目标文档后缀名,判断所述目标文档中是否存在宏代码。
32.可选的,所述检测模块具体用于:
33.利用宏代码提取工具,从所述目标文档中提取宏代码,生成提取结果;
34.基于所述提取结果,判断所述目标文档中是否存在宏代码。
35.可选的,所述第一确定模块具体用于:
36.获取第一非空单元格的列序号,检测与所述第一非空单元格间隔一个单元格的第一单元格是否为非空;
37.若第一单元格为非空,则将所述第一单元格确定为第二非空单元格;
38.若第一单元格为空,则检测与所述第一单元格间隔一个单元格的第二单元格是否为非空;所述第二单元格与所述第一非空单元格位于所述第一单元格的两侧;
39.若第二单元格为非空,则将所述第二单元格确定为第二非空单元格;
40.基于所述第一非空单元格的列序号与所述第二非空单元格的列序号,确定两者之间的差值。
41.可选的,所述装置还包括:
42.报警模块,用于生成报警信息,并将所述报警信息向用户展示。
43.第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行本发明的任一实施例提供的宏病毒的检测方法。
44.第四方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现本发明的任一实施例提供的宏病毒的检测方法。
45.本发明的实施例提供的宏病毒的检测方法、装置、电子设备及存储介质,能够检测目标文档中是否存在宏代码;若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的列序号与第二非空单元格的列序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一行的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;若所述差值大于预设阈值,则判定所述目标文档中存在宏病毒;或,若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的行序号与第二非空单元格的行序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一列的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;若所述差值大于预设阈值,则判定所述目标文档中存在宏病毒。这样一来,通过检测文档中的表格中的相邻非空单元格之间的间距,具体可以为非空单元格的行序号差值或者列序号差值,并将上述差值与预设阈值相比较,当上述差值大于预设阈值时,即可获知目标文档中存放数据的方式不符合用户对文档的正常操作行为习惯,从而可以判定目标文档中存在宏病毒。本方案适用于任何文档中的表格,具有良好的通用性,因此相比于现有技术,能够提高宏病毒检测方法的通用性。
附图说明
46.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
47.图1为本发明实施例提供的一种宏病毒的检测方法的流程示意图;
48.图2为宏病毒在文档中进行数据放置的一种举例示意图;
49.图3为本发明实施例提供的另一种宏病毒的检测方法的流程示意图;
50.图4为本发明实施例提供的一种宏病毒的检测装置的结构示意图;
51.图5为本发明实施例提供的另一种宏病毒的检测装置的结构示意图;
52.图6为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
53.下面结合附图对本发明实施例进行详细描述。
54.应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
55.本发明实施例提供了一种宏病毒的检测方法,该方法可以由软件和/或硬件实现的宏病毒的检测装置执行,参见图1,该方法可以包括:
56.s11,检测目标文档中是否存在宏代码;
57.在本步骤中,目标文档是指当前要对其是否携带宏病毒进行检测的文档。本发明实施例对多种场景中的目标文档都可以进行检测,例如,邮件、内网smb(server message block,服务器信息块)文件共享、ftp(file transfer protocol,文件传输协议)和http(hypertext transfer protocol,超文本传输协议)文件传输等场景中进行传输以及处理的文档,本发明实施例对此不作限定。
58.本发明实施例中的宏代码,是指在数据文件中被程序语言允许使用的指令序列。宏病毒,则是指寄存在文档文件或文档文件模版上,用宏语言编写的恶意指令序列,当用户打开被宏病毒感染的文档或者对被宏病毒感染的文档进行操作,并启动宏代码时,会将宏病毒激活,使其运行,从而产生安全隐患。宏代码是宏病毒存在的前提,因此本步骤首先对目标文档中是否存在宏代码进行检测。如果在文档中不存在宏代码,那么必然不可能存在宏病毒,那么后续步骤中对宏病毒的检测将没有任何意义。
59.具体的,可以根据接收到的检测指令,从指令中获取目标文档的信息,然后对目标文档是否存在宏代码进行检测。
60.经过对目标文档中的宏代码进行检测,若目标文档中含有宏代码,则目标文档中可能存在宏病毒,需要进行进一步检测,具体可以执行步骤s12。
61.s12,在所述目标文档中确定第一非空单元格的列序号与第二非空单元格的列序号的差值。
62.其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一行的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格。
63.若所述差值大于预设阈值,则执行下述的步骤s13。
64.s13,则判定所述目标文档中存在宏病毒。
65.为便于描述,将步骤s12与步骤s13结合起来进行阐述说明。
66.按照用户对文档的正常操作行为习惯,为了便于对表格中的数据进行查看以及处理,用户会将数据在表格中集中放置,至多是根据实际的需要,在表格中的非空单元格之间留有少量的空单元格,而不会出现将数据放置在距离其他数据间距特别大的位置,即不会出现某个非空单元格距离其他非空单元格距离特别大的情况。与用户的上述操作习惯相反的是,宏病毒为了避免其特征被相关的杀毒软件检测到,会将包含其特征的数据放置在表格中的某个单元格中,如图2所示,宏病毒将创建c:\programdata\qjjogwqt.sct文件并使
用mshta.exe执行对应的代码存放至b577单元格中,文档的auto_open标签设置为空白的b37单元格,在表格中的宏代码启动时,会依次向下执行该列的每个单元格中的代码,因此会执行b577中的内容,从而对计算机造成安全危害。
67.在宏病毒将数据放置在表格中时,为了避免用户在使用表格的过程中发现其放置在表格中的包括其特征的数据,通常会将包括其特征的数据放置在表格中距离其他包含数据的非空单元格很远的位置。举例而言,在表格中,用户放置数据的区域为行序号为1至50,列序号为1至50的区域范围内,宏病毒为了避免其在表格中放置的数据被发现,会将这些数据放置为离上述区域距离较远的位置,例如,行序号为500,列序号为500的单元格中。
68.可以理解的是,如果表格中位于同一行的两个非空单元格直接相邻,两者之间不存在任何单元格,这种情况符合用户的操作习惯,而与宏病毒放置数据的方式不相符,因此可以直接认定为不能推测出表格包括宏病毒的情况。因此本发明实施例中可以直接忽略这种情形,而只对中间存在空单元格的两个非空单元格进行检测即可。
69.在本发明实施例的一种实现方式中,可以检测在表格中每一行,是否存在某一非空单元格与其相邻的非空单元格(指两者之间仅存在空单元格的两个非空单元格)之间的距离超过预设阈值的情况,以实现检测宏病毒是否存在。具体的,可以检测两个相邻的非空单元格的列序号差值,将该差值与预设阈值进行对比。
70.该预设阈值可以根据实际的情形进行相应设置,例如,如果在一个表格中正常存储数据的区域,在每一行中,连续空单元格不超过10个的情况中,即表明两个相邻的非空单元格之间的列序号差值都不大于10。可以将上述预设阈值设置为10,如果两个相邻的非空单元格的列序号差值大于10,则足以说明这种数据放置的方式并不符合用户的操作习惯,因此可以判定表格中存在宏病毒放置的数据,从而可以判断表格中存在宏病毒。
71.本发明的实施例提供的宏病毒的检测方法,能够检测目标文档中是否存在宏代码;若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的列序号与第二非空单元格的列序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一行的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;若所述差值大于预设阈值,则判定所述目标文档中存在宏病毒。这样一来,通过检测文档中的位于同一行的相邻非空单元格之间的列序号差值,并将上述差值与预设阈值相比较,当上述差值大于预设阈值时,即可获知目标文档中存放数据的方式不符合用户对文档的正常操作行为习惯,从而可以判定目标文档中存在宏病毒。本方案适用于任何文档中的表格,具有良好的通用性,因此相比于现有技术,能够提高宏病毒检测方法的通用性。
72.可选的,在本发明的一个实施例中,步骤s11中,所述检测所述目标文档中是否存在宏代码,可以包括:根据所述目标文档后缀名,判断所述目标文档中是否存在宏代码。
73.具体而言,以excel表格为例,对于含有宏代码的excel表格,其后缀名为.xlam或者.xlsm,因此通过目标文档的后缀名即可快速判断excel表格中是否存在宏代码。
74.除了上述的利用文档的后缀名对宏代码进行检测的方法之外,在本发明的一个实施例中,步骤s11中,所述检测所述目标文档中是否存在宏代码,可以包括:利用宏代码提取工具,从所述目标文档中提取宏代码,生成提取结果;基于所述提取结果,判断所述目标文档中是否存在宏代码。
75.在本发明实施例中,可以判断目标文件中是否包含宏代码。具体的,可以尝试使用宏代码抽取工具,如oletools从目标文件中逐行提取宏代码,如果能够提取到,则可以确定目标文件中包含宏代码,如果提取失败,则可以确定目标文件中不包含宏代码,则无需再对目标文件进行后续操作。
76.具体的,可以检测[content_types].xml内的字段值,是否为:contenttype="application/vnd.ms-office.vbaproject",对于excel4.0宏,可以检测是否为:contenttype="application/vnd.ms-excel.macrosheet+xml",同时检查是否存在macrosheets文件夹下的工作表。
[0077]
可选的,在本发明的一个实施例中,所述在所述目标文档中确定第一非空单元格的列序号与第二非空单元格的列序号的差值,可以包括:获取第一非空单元格的列序号,检测与所述第一非空单元格间隔一个单元格的第一单元格是否为非空;若第一单元格为非空,则将所述第一单元格确定为第二非空单元格;若第一单元格为空,则检测与所述第一单元格间隔一个单元格的第二单元格是否为非空;所述第二单元格与所述第一非空单元格位于所述第一单元格的两侧;若第二单元格为非空,则将所述第二单元格确定为第二非空单元格;基于所述第一非空单元格的列序号与所述第二非空单元格的列序号,确定两者之间的差值。
[0078]
在本发明实施例中,需要对表格中位于同一行上任意两个相邻的非空单元格之间的间距进行计算,以达到对表格进行全面彻底的检测。因此,此处的第一非空单元格可以是表格中的任一非空单元格,通过第一非空单元格,可以找到与其在行方向上相邻的第二非空单元格,并在此基础上获得两者之间的间距。具体的,在确定了第一非空单元格之后,可以通过与检测与第一非空单元格间隔一个单元格的单元格是否为非空单元格,如果是,则可以确定第一单元格即为第一非空单元格相邻的第二非空单元格,如果不是,则按照上述方法,继续沿着与第一单元格相同的方向,检测下一单元格是否非空,并重复上述步骤,直至查找到第一非空单元格相邻的非空单元格(即第二非空单元格),采用上述方法可以快速准确地确定任一非空单元格相邻的非空单元格。
[0079]
可选的,在本发明的一个实施例中,所述判定所述目标文档中存在宏病毒之后,本发明实施例提供的宏病毒的检测方法还可以包括:生成报警信息,并将所述报警信息向用户展示。
[0080]
在本发明实施例中,在表格中存在宏病毒的情况下,可以生成报警信息,并将报警信息传输至用户端,并进行展示,以便于用户对宏病毒进行及时清除,以消除安全隐患。
[0081]
除了采用表格中位于同一行的相邻非空单元格的间距对宏病毒进行检测之外,同样可以采用表格中位于同一列的相邻非空单元格的间距对宏病毒进行检测,请参见图3,以下进行详细说明,本发明实施例提供的宏病毒的检测方法可以包括:
[0082]
s21,检测目标文档中是否存在宏代码;
[0083]
本发明实施例中,步骤s21的实现过程和上述方法实施例的步骤s11相同,此处不再赘述。
[0084]
s22,若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的行序号与第二非空单元格的行序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一列的两个单元格,且所述第一非空单元格与所述
第二非空单元格之间的单元格为空单元格;
[0085]
若所述差值大于预设阈值,则执行下述步骤s23。
[0086]
s23,则判定所述目标文档中存在宏病毒。
[0087]
为便于描述,将步骤s22与步骤s23结合起来进行阐述说明。
[0088]
按照用户对文档的正常操作行为习惯,为了便于对表格中的数据进行查看以及处理,用户会将数据在表格中集中放置,至多是根据实际的需要,在表格中的非空单元格之间留有少量的空单元格,而不会出现将数据放置在距离其他数据间距特别大的位置,即不会出现某个非空单元格距离其他非空单元格距离特别大的情况。与用户的上述操作习惯相反的是,宏病毒为了避免其特征被相关的杀毒软件检测到,会将包含其特征的数据放置在表格中的某个单元格中。
[0089]
在宏病毒将数据放置在表格中时,为了避免用户在使用表格的过程中发现其放置在表格中的包括其特征的数据,通常会将包括其特征的数据放置在表格中距离其他包含数据的非空单元格很远的位置。举例而言,在表格中,用户放置数据的区域为行序号为1至50,列序号为1至50的区域范围内,宏病毒为了避免其在表格中放置的数据被发现,会将这些数据放置为离上述区域距离较远的位置,例如,行序号为500,列序号为500的单元格中。
[0090]
可以理解的是,如果表格中位于同一列的两个非空单元格直接相邻,两者之间不存在任何单元格,这种情况符合用户的操作习惯,而与宏病毒放置数据的方式不相符,因此可以直接认定为不能推测出表格包括宏病毒的情况。因此本发明实施例中可以直接忽略这种情形,而只对中间存在空单元格的两个非空单元格进行检测即可。
[0091]
在本发明实施例的一种实现方式中,可以检测在表格中每一列,是否存在某一非空单元格与其相邻的非空单元格(指两者之间仅存在空单元格的两个非空单元格)之间的距离超过预设阈值的情况,以实现检测是否存在宏病毒。具体的,可以检测两个相邻的非空单元格的列序号差值,将该差值与预设阈值进行对比。
[0092]
该预设阈值可以根据实际的情形进行相应设置,例如,如果在一个表格中正常存储数据的区域,在每一列中,连续空单元格不超过10个的情况中,即表明如果两个相邻的非空单元格之间的行序号差值都不大于10。可以将上述预设阈值是指为10,如果两个相邻的非空单元格的行序号差值大于10,则足以说明这种数据放置的方式并不符合用户的操作习惯,因此可以判定表格中存在宏病毒放置的数据,从而可以判断表格中存在宏病毒。
[0093]
本发明的实施例提供的宏病毒的检测方法,能够检测目标文档中是否存在宏代码;若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的行序号与第二非空单元格的行序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一列的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;若所述差值大于预设阈值,则判定所述目标文档中存在宏病毒。这样一来,通过检测文档中的位于同一列的非空单元格之间的行序号差值,并将上述差值与预设阈值相比较。当上述差值大于预设阈值时,即可获知目标文档中存放数据的方式不符合用户对文档的正常操作行为习惯,从而可以判定目标文档中存在宏病毒。本方案适用于任何文档中的表格,具有良好的通用性,因此相比于现有技术,能够提高宏病毒检测方法的通用性。
[0094]
可选的,在本发明的一个实施例中,步骤s21中,所述检测所述目标文档中是否存
在宏代码,可以包括:根据所述目标文档后缀名,判断所述目标文档中是否存在宏代码。
[0095]
具体而言,以excel表格为例,对于含有宏代码的excel表格,其后缀名为.xlam或者.xlsm,因此通过目标文档的后缀名即可判断excel表格中是否存在宏代码。
[0096]
除了上述的利用文档的后缀名对宏代码进行检测的方法之外,在本发明的一个实施例中,步骤s21中,所述检测所述目标文档中是否存在宏代码,可以包括:利用宏代码提取工具,从所述目标文档中提取宏代码,生成提取结果;基于所述提取结果,判断所述目标文档中是否存在宏代码。
[0097]
在本发明实施例中,可以判断目标文件中是否包含宏代码。具体的,可以尝试使用宏代码抽取工具,如oletools从目标文件中逐行提取宏代码,如果能够提取到,则可以确定目标文件中包含宏代码,如果提取失败,则可以确定目标文件中不包含宏代码,则无需再对目标文件进行后续操作。
[0098]
具体的,可以检测[content_types].xml内的字段值,是否为:contenttype="application/vnd.ms-office.vbaproject",对于excel4.0宏,可以检测是否为:contenttype="application/vnd.ms-excel.macrosheet+xml",同时检查是否存在macrosheets文件夹下的工作表
[0099]
可选的,在本发明的一个实施例中,所述在所述目标文档中确定第一非空单元格的行序号与第二非空单元格的行序号的差值,可以包括:获取第一非空单元格的行序号,检测与所述第一非空单元格间隔一个单元格的第一单元格是否为非空;若第一单元格为非空,则将所述第一单元格确定为第二非空单元格;若第一单元格为空,则检测与所述第一单元格间隔一个单元格的第二单元格是否为非空;所述第二单元格与所述第一非空单元格位于所述第一单元格的两侧;若第二单元格为非空,则将所述第二单元格确定为第二非空单元格;基于所述第一非空单元格的行序号与所述第二非空单元格的行序号,确定两者之间的差值。
[0100]
在本发明实施例中,需要对表格中位于同一列的任意两个相邻的非空单元格之间的间距进行计算,以达到对表格进行全面彻底的检测,从而提高检测效果。因此,此处的第一非空单元格可以是表格中的任一非空单元格,通过第一非空单元格,可以找到与其在列方向上相邻的第二非空单元格,并在此基础上获得两者之间的间距。具体的,在确定了第一非空单元格之后,可以通过与检测与第一非空单元格在列方向上间隔一个单元格的单元格是否为非空单元格,如果是,则可以确定第一单元格即为第一非空单元格相邻的第二非空单元格,如果不是,则按照上述方法,继续沿着与第一单元格相同的方向,检测下一单元格是否非空,并重复上述步骤,直至查找到第一非空单元格相邻的非空单元格(即第二非空单元格),采用上述方法可以快速准确确定任一非空单元格在列方向上相邻的非空单元格。
[0101]
可选的,在本发明的一个实施例中,所述判定所述目标文档中存在宏病毒之后,本发明实施例提供的宏病毒的检测方法还可以包括:生成报警信息,并将所述报警信息向用户展示。
[0102]
在本发明实施例中,在表格中存在宏病毒的情况下,可以生成报警信息,并将报警信息传输至用户端,并进行展示,以便于用户对宏病毒进行清除,消除安全隐患。
[0103]
相应的,如图4所示,本发明的实施例还提供一种宏病毒的检测装置4,包括:
[0104]
检测模块41,用于检测目标文档中是否存在宏代码;
[0105]
第一确定模块42,用于若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的列序号与第二非空单元格的列序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一行的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;
[0106]
第一判定模块43,用于若所述差值大于预设阈值,则判定所述目标文档中存在宏病毒。
[0107]
本发明的实施例提供的宏病毒的检测装置,能够检测目标文档中是否存在宏代码;若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的列序号与第二非空单元格的列序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一行的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;若所述差值大于预设阈值,则判定所述目标文档中存在宏病毒。这样一来,通过检测文档中的位于同一行的相邻非空单元格之间的列序号差值,并将上述差值与预设阈值相比较。当上述差值大于预设阈值时,即可获知目标文档中存放数据的方式不符合用户对文档的正常操作行为习惯,从而可以判定目标文档中存在宏病毒。本方案适用于任何文档中的表格,具有良好的通用性,因此相比于现有技术,能够提高宏病毒检测方法的通用性。
[0108]
可选的,检测模块41具体用于:
[0109]
根据所述目标文档后缀名,判断所述目标文档中是否存在宏代码。
[0110]
可选的,检测模块41具体用于:
[0111]
利用宏代码提取工具,从所述目标文档中提取宏代码,生成提取结果;
[0112]
基于所述提取结果,判断所述目标文档中是否存在宏代码。
[0113]
可选的,第一确定模块42具体用于:
[0114]
获取第一非空单元格的列序号,检测与所述第一非空单元格间隔一个单元格的第一单元格是否为非空;
[0115]
若第一单元格为非空,则将所述第一单元格确定为第二非空单元格;
[0116]
若第一单元格为空,则检测与所述第一单元格间隔一个单元格的第二单元格是否为非空;所述第二单元格与所述第一非空单元格位于所述第一单元格的两侧;
[0117]
若第二单元格为非空,则将所述第二单元格确定为第二非空单元格;
[0118]
基于所述第一非空单元格的列序号与所述第二非空单元格的列序号,确定两者之间的差值。
[0119]
可选的,装置4还包括:
[0120]
报警模块,用于生成报警信息,并将所述报警信息向用户展示。
[0121]
此外,如图5所示,本发明实施例提供另一种宏病毒的检测装置5,包括:
[0122]
检测模块51,用于检测目标文档中是否存在宏代码;
[0123]
第二确定模块52,用于若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的行序号与第二非空单元格的行序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一列的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;
[0124]
第二判定模块53,用于若所述差值大于预设阈值,则判定所述目标文档中存在宏
病毒。
[0125]
本发明的实施例提供的宏病毒的检测装置,能够检测目标文档中是否存在宏代码;若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的行序号与第二非空单元格的行序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一列的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;若所述差值大于预设阈值,则判定所述目标文档中存在宏病毒。这样一来,通过检测文档中的位于同一列的非空单元格之间的行序号差值,并将上述差值与预设阈值相比较。当上述差值大于预设阈值时,即可获知目标文档中存放数据的方式不符合用户对文档的正常操作行为习惯,从而可以判定目标文档中存在宏病毒。本方案适用于任何文档中的表格,具有良好的通用性,因此相比于现有技术,能够提高宏病毒检测方法的通用性。
[0126]
可选的,检测模块51具体用于:
[0127]
根据所述目标文档后缀名,判断所述目标文档中是否存在宏代码。
[0128]
可选的,检测模块51具体用于:
[0129]
利用宏代码提取工具,从所述目标文档中提取宏代码,生成提取结果;
[0130]
基于所述提取结果,判断所述目标文档中是否存在宏代码。
[0131]
可选的,第二确定模块52具体用于:
[0132]
获取第一非空单元格的行序号,检测与所述第一非空单元格间隔一个单元格的第一单元格是否为非空;
[0133]
若第一单元格为非空,则将所述第一单元格确定为第二非空单元格;
[0134]
若第一单元格为空,则检测与所述第一单元格间隔一个单元格的第二单元格是否为非空;所述第二单元格与所述第一非空单元格位于所述第一单元格的两侧;
[0135]
若第二单元格为非空,则将所述第二单元格确定为第二非空单元格;
[0136]
基于所述第一非空单元格的行序号与所述第二非空单元格的行序号,确定两者之间的差值。
[0137]
可选的,装置5还包括:
[0138]
报警模块,用于生成报警信息,并将所述报警信息向用户展示。
[0139]
本发明实施例提供的两种宏病毒的检测装置与前述的两种宏病毒的检测方法属于同一发明构思,未在宏病毒的检测装置中描述的技术细节可参见前述的宏病毒的检测方法中的相关描述,在此不再赘述。
[0140]
相应的,本发明实施例还提供一种电子设备,图6为本发明电子设备一个实施例的结构示意图,可以实现本发明图1或者图3所示实施例的流程。如图6所示,上述电子设备可以包括:壳体31、处理器32、存储器33、电路板34和电源电路35,其中,电路板34安置在壳体31围成的空间内部,处理器32和存储器33设置在电路板34上;电源电路35,用于为上述电子设备的各个电路或器件供电;存储器33用于存储可执行程序代码;处理器32通过读取存储器33中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的方法。
[0141]
处理器32对上述步骤的具体执行过程以及处理器32通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1或者图3所示实施例的描述,在此不再赘述。
[0142]
该电子设备以多种形式存在,包括但不限于:
[0143]
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iphone)、多媒体手机、功能性手机,以及低端手机等。
[0144]
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:pda、mid和umpc设备等,例如ipad。
[0145]
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如ipod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
[0146]
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
[0147]
(5)其他具有数据交互功能的电子设备。
[0148]
此外,本发明的实施例还提供一种计算机程序介质,该计算机程序介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现本发明任一实施例提供的方法,因此也能实现相应的有益技术效果,前文已经进行了相应说明,此处不再赘述。
[0149]
本发明的实施例提供的宏病毒的检测方法、装置、电子设备及存储介质,能够检测目标文档中是否存在宏代码;若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的列序号与第二非空单元格的列序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一行的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;若所述差值大于预设阈值,则判定所述目标文档中存在宏病毒;或,若所述目标文档中存在宏代码,则在所述目标文档中确定第一非空单元格的行序号与第二非空单元格的行序号的差值;其中,所述第一非空单元格与所述第二非空单元格为所述目标文档中的表格中处于同一列的两个单元格,且所述第一非空单元格与所述第二非空单元格之间的单元格为空单元格;若所述差值大于预设阈值,则判定所述目标文档中存在宏病毒。这样一来,通过检测文档中的表格中相邻非空单元格之间的间距,具体可以为非空单元格的行序号差值或者列序号差值,并将上述差值与预设阈值相比较。当上述差值大于预设阈值时,即可获知目标文档中存放数据的方式不符合用户对文档的正常操作行为习惯,从而可以判定目标文档中存在宏病毒。本方案适用于任何文档中的表格,具有良好的通用性,因此相比于现有技术,能够提高宏病毒检测方法的通用性。此外,本发明的实施例可以根据目标文档后缀名,即可快速判断目标文档中是否存在宏代码。本发明实施例还可以使用宏代码抽取工具从目标文档中提取宏代码,并根据提取结果对目标文档是否存在宏代码进行判定。本发明实施例还提供了一种根据第一非空单元格快速找到与之相邻的第二非空单元格的具体方法。本发明实施例在检测到目标文档中存在宏病毒的情况下,可以生成报警信息,并发送给客户,以便于用户对宏病毒进行及时清除。
[0150]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖
非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0151]
本发明实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
[0152]
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
[0153]
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0154]
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
[0155]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等。
[0156]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1