一种恶意文件的检测方法、装置及存储介质与流程

文档序号:28265978发布日期:2021-12-31 18:27阅读:256来源:国知局
一种恶意文件的检测方法、装置及存储介质与流程

1.本发明涉及计算机技术领域,具体涉及一种恶意文件的检测方法、装置及存储介质。


背景技术:

2.恶意文件是指包含有程序设计者出于攻击意图所编写的一段程序的文件,恶意文件往往是可执行文件,例如,在计算机系统上执行恶意任务的病毒、蠕虫或特洛伊木马等程序。恶意文件利用计算机系统的漏洞执行恶意任务,例如窃取机密信息、破坏存储的数据等等。静态检测技术是一种常见的检测恶意文件的技术。静态检测技术是指在不运行计算机程序的条件下进行程序分析的方法。静态检测技术基于特征库对测试文件进行特征匹配,例如对测试文件的源代码、汇编、语法、结构、过程或接口等方面进行分析来判断测试文件中是否包含特征库中的特征码,根据特征匹配结果确认测试文件是否为恶意文件。随着恶意文件和安全软件的不断对抗,出现大量检测规避技术(也被称为混淆技术),如:加壳、加密、花指令等。恶意文件利用这些检测规避技术来隐藏或修改代码数据,从而避免被采用上述静态检测技术的安全设备检测出来。
3.现有静态检测技术对于经检测规避技术处理的恶意文件检测效果不佳。特别是,现有静态检测技术对于采用加密或加壳的检测技术处理的恶意文件的检测效果不佳。


技术实现要素:

4.本技术实施例提供一种恶意文件的检测方法,能够解决传统静态检测方法中无法对加壳和加密文件进行有效检测的问题。
5.为了达到上述目的,本技术提供如下技术方案:
6.本技术第一方面提供一种恶意文件的检测方法,检测设备在虚拟运行环境中运行测试文件,以获取该测试文件的运行数据。其中,虚拟运行环境是指沙箱,检测设备是运行虚拟运行环境的计算机设备。虚拟运行环境与检测设备的真实运行环境相隔离,检测设备允许在该虚拟运行环境内运行浏览器或其他程序,运行浏览器或其他程序所产生的变化随后能够被删除。在虚拟运行环境内部运行的程序不会对检测设备的硬盘产生永久性的影响。测试文件为待检测是否为恶意文件的文件。检测设备在获取到测试文件后,将测试文件输入虚拟运行环境运行。运行数据包括增量内存数据和参数数据中的至少一种。增量内存数据为第一内存空间中存储的数据,该第一内存空间为测试文件在运行过程中所申请的内存。测试文件在运行过程中会对检测设备发起一次或多次的内存申请,从而实现各种动态行为,例如系统服务请求、文件读写、注册表修改、api调用或网络访问等。检测设备通过截获测试文件每一次的调用内存申请函数的调用参数,确定测试文件每一次申请的内存的地址信息。该每一次申请的内存的总和即为第一内存空间,第一内存空间中存储的数据即为增量内存数据。参数数据包括第一调用参数集合中每个参数对应的数据,该第一调用参数集合包括测试文件在运行过程中一次或多次调用目标函数时采用的参数。检测设备获取测
试文件每一次调用目标函数时所采用的参数,从而得到测试文件在运行过程中一次或多次调用目标函数的一个或多个参数,第一调用参数集合包含该一个或多个参数。检测设备获取第一调用参数集合中每个参数对应的数据,从而得到参数数据。第一调用参数集合中每个参数对应的数据可能是一类数据型数据,也可能是参数指示指向的地址,例如字符串、一些小的数据结构等。目标函数属于预定函数集合。预定函数集合中包含了一个或多个目标函数。目标函数是指预定函数集合中的任意一个目标函数。检测设备在获取到运行数据后,根据运行数据生成至少一个重构文件。当获取的运行数据中包含的数据类型不同时,根据运行数据生成的至少一个重构文件也有所不同。例如,当运行数据包括增量内存数据或参数数据时,该至少一个重构文件为基于增量内存数据或参数数据生成的文件。例如,若运行数据只包括增量内存数据或参数数据,则该至少一个重构文件即为增量内存数据或参数数据。若运行数据除了包括增量内存数据或参数数据,还包括其他数据,则该至少一个重构文件的数量可以是1,该重构文件是根据增量内存数据或参数数据,以及该其他数据生成的;或者该至少一个重构文件的数量为2,其中一个重构文件为增量内存数据或参数数据,另一个重构文件是根据增量内存数据或参数数据,以及该其他数据生成的一个文件。当运行数据中除了包括增量内存数据和参数数据之外,还包括其他数据,则至少一个重构文件的数量可以是1、2或3。增量内存数据、参数数据和其他数据三者的任意组合均能够作为一个重构文件用于进行后续的静态检测。检测设备在生成该至少一个重构文件后,对该至少一个重构文件进行静态检测,当该至少一个重构文件中的任意一个重构文件的静态检测结果显示为恶意文件时,确定测试文件为恶意文件。
7.由以上第一方面可知,通过获取测试文件在虚拟运行环境中的运行数据,该运行数据包括测试文件的运行过程中申请的内存中的增量内存数据和测试文件在运行过程一次或多次调用目标函数所采用的每个第一调用参数对应的参数数据中的至少一种,然后基于运行数据确定至少一个能够描述测试文件在执行过程中的行为信息的重构文件,最后基于该至少一个重构文件的静态检测结果判断测试文件是否为恶意文件,从而能够有效的解决传统静态检测方法中无法对加壳和加密文件进行有效检测的问题。
8.可选地,结合上述第一方面,在第一方面第一种可能的实现方式中,增量内存数据包括第一数据和第二数据。第一数据为第二内存空间中存储的数据,第二内存空间为测试文件在运行过程中申请且释放的内存。第二数据为第三内存空间中存储的数据,第三内存空间为测试文件在运行过程中申请且运行结束后未释放的内存。当运行数据包括增量内存数据时,获取测试文件的运行数据的具体方式是,检测设备首先获取第二调用参数集合以及第三调用参数集合。测试文件在运行过程中会至少调用两次内存申请函数进行内存的申请,测试文件每一次调用内存申请函数采用一个参数,检测设备获取测试文件在运行过程中每一次调用内存申请函数所采用的参数,并记录每一个参数的参数指针所指向的内存空间的内存地址,从而得到第二调用参数集合。即第二调用参数集合包括测试文件在运行过程中多次调用内存申请函数时采用的参数。第二调用参数集合中的参数用于指示第一内存空间的内存地址。测试文件在运行时会通过调用一次或多次内存释放函数进行内存的释放。检测设备获取测试文件在运行过程中每一次调用内存释放函数所采用的参数,以得到第三调用参数集合。第三调用参数集合包括测试文件在运行过程中一次或多次调用内存释放函数时采用的参数,测试文件每次调用内存释放函数时采用一个第三调用参数集合中的
参数,第三调用参数集合中的参数用于指示第二内存空间的内存地址。检测设备在获取到第二调用参数集合之后,从第二内存空间的内存地址中获取第一数据。第三内存空间为测试文件在运行过程中申请但未释放的内存。当测试文件在虚拟运行环境运行结束后,检测设备再根据预先记录的第一内存空间的内存地址和第二内存空间的内存地址确定第三内存空间的内存地址,然后从第三内存空间的内存地址中获取第二数据。
9.由以上第一方面第一种可能的实现方式可知,通过获取测试文件在运行过程中调用内存申请函数的第二调用参数集合以及调用内存释放函数的第三调用参数集合,准确的提取出测试文件在运行过程中申请的内存中存储的数据,从而提升后续生成的重建文件的对于测试文件特征还原的准确度,保证了对于测试文件的检测效果。
10.可选地,结合上述第一方面或第一方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,当运行数据包括参数数据时,获取测试文件的运行数据,包括:获取测试文件一次或多次调用目标函数时采用的参数,从而获得第一调用参数集合;从第一调用参数集合中的每个参数的指针所指向的内存地址中获取参数数据。检测设备获取测试文件每一次调用目标函数时所采用的参数,从而得到测试文件在运行过程中一次或多次调用目标函数的一个或多个参数,第一调用参数集合包含该一个或多个参数。检测设备获取第一调用参数集合中每个参数对应的数据,从而得到参数数据。
11.由以上第一放后面第二种可能实现的方式可知,通过获取测试文件在运行过程中调用目标函数的第一调用参数集合,准确的提取出测试文件在运行过程中对于目标函数调用的参数数据,从而提升后续生成的重建文件的对于测试文件特征还原的准确度,保证了对于测试文件的检测效果。
12.可选地,结合上述第一方面、第一方面第一种至第二种中任意一种可能的实现方式,在第一方面第三种可能的实现方式中,参数数据为第一调用参数集合中的参数的指针所指向的内存地址中满足预置条件的数据,预置条件包括以下中的至少一种:参数数据的数据类型为字符串类型、参数数据的数据长度大于或等于预置长度、测试文件的运行过程中首次出现的参数数据(即参数数据中不要有重复的数据)。例如,当预置条件包括“参数数据的数据类型为字符串类型”这一条件时,检测设备在获取参数数据时,会从每个第一调用参数所对应的数据中筛选出数据类型为字符串类型的数据作为参数数据。例如,当预置条件包括“参数数据的数据类型为字符串类型”和“测试文件的运行过程中首次出现的参数数据”这两个条件时,检测设备在获取参数数据时,会对第一调用参数集合中每个参数所对应的数据进行筛选,在满足参数数据的数据类型为字符串类型的同时,还需要满足是测试文件在运行过程中首次出现的参数数据时,才能被筛选为参数数据。
13.由以上第一方面第三种可能的实现方式可知,通过对参数数据设置筛选条件,从而提升检测设备的检测性能。
14.可选地,结合上述第一方面、第一方面第一种至第三种中任意一种可能的实现方式,在第一方面第四种可能的实现方式中,运行数据还包括映像内存数据,映像内存数据为第四内存空间在测试文件在运行结束后存储的数据,第四内存空间是操作系统为初始映像数据分配的内存空间,初始映像数据为虚拟运行环境运行测试文件的初始化阶段从硬盘加载到内存中的数据。具体的,检测设备在将测试文件输入至虚拟运行空间中运行的过程中,检测设备的操作系统首先会为测试文件分配一个特定的内存空间,用于加载虚拟运行环境
运行测试文件的初始化阶段的初始映像数据。测试文件在虚拟运行空间运行的过程中,该特定的内存空间中存储的数据可能会发生变化。本技术实施例中的映像内存数据为该特定的内存空间在测试文件在运行结束后存储的数据。在测试文件运行结束后,检测设备会从该特定的内存空间中获取映像内存数据。
15.可选地,结合上述第一方面第四种可能的实现方式,在第一方面第五种可能的实现方式中,当运行数据包括增量内存数据和映像内存数据时,至少一个重构文件包括第一重构文件,检测设备根据运行数据生成至少一个重构文件的具体方式是根据增量内存数据和映像内存数据生成第一重构文件,例如,将增量内存数据和映像内存数据保存为第一重构文件。对应地,检测设备对该至少一个重构文件进行静态检测,根据静态检测的结果判断测试文件是否为恶意文件,包括:对第一重构文件进行静态检测,根据第一重构文件的静态检测的结果判断测试文件是否为恶意文件。
16.可选地,结合上述第一方面第四种可能的实现方式,在第一方面第六种可能的实现方式中,当运行数据包括增量内存数据、参数数据和映像内存数据时,至少一个重构文件包括第二重构文件,检测设备根据运行数据生成至少一个重构文件的具体方式是根据增量内存数据、参数数据和映像内存数据生成第二重构文件。对应地,检测设备对该至少一个重构文件进行静态检测,根据静态检测的结果判断测试文件是否为恶意文件的具体方式是:检测设备对第二重构文件进行静态检测,根据第二重构文件的静态检测的结果判断测试文件是否为恶意文件。
17.由以上第一方面第六种可能的实现方式可知,除了能够将增量内存数据和映像内存数据保存为一个重构文件用于检测测试文件是否为恶意文件,还能根据增量内存数据、参数数据和映像内存数据生成一个重构文件,用于检测测试文件是否为恶意文件,从而保证了检测方案的多样性。
18.可选地,结合上述第一方面第六种可能的实现方式,在第一方面第七种可能的实现方式中,至少一个重构文件除了包括第二重构文件还包括第三重构文件,检测设备根据运行数据生成至少一个重构文件的具体方式中,还包括:根据增量内存数据和映像内存数据生成第三重构文件。对应地,检测设备对至少一个重构文件进行静态检测,根据静态检测的结果判断测试文件是否为恶意文件,包括:检测设备分别对第二重构文件和第三重构文件进行静态检测,当第二重构文件和第三重构文件中的任意一个文件被检测为恶意文件时,确定测试文件为恶意文件。
19.由以上第一方面第七种可能的实现方式可知,可以将增量内存数据和映像内存数据保存为一个重构文件,根据增量内存数据、参数数据和映像内存数据生成另一个重构文件,然后分别对这两个重构文件进行静态检测,当任意一个重构文件被检测为恶意文件时,测试文件即为恶意文件,不但保证了测试文件的检测效果,还增加了检测方案的多样性。
20.可选地,结合上述第一方面第六种或第七种可能的实现方式,在第一方面第八种可能的实现方式中,检测设备根据增量内存数据、参数数据和映像内存数据生成第二重构文件的具体方式为:首先根据映像内存数据生成重建文件;再将目标内存数据和参数数据依次写入重建文件的尾部,以得到第二重构文件,其中,目标内存数据是根据增量内存数据确定的。在一种可选的实施方式中,目标内存数据为增量内存数据。
21.可选地,结合上述第一方面第八种可能的实现方式,在第一方面第九种可能的实
现方式中,检测设备将目标内存数据和参数数据依次写入重建文件的尾部之前,还会先根据增量内存数据确定目标内存数据。其中,目标内存数据包含的内存数据的个数为第一取值,第一取值小于或等于增量内存数据包含的内存数据的个数,目标内存数据的数据大小为第二取值,第二取值小于或等于增量内存数据的数据大小。例如,检测设备根据装置性能,对附加的内存数据的个数和总大小进行限制,根据该限制对增量内存数据进行一些调整和修改得到满足内存数量和总大小的目标内存数据。例如,增量内存数据包含的内存数据的数目为q,则目标内存数据包含的内存数据的个数可以设置为p,p为大于0,且小于或者等于q的数值。例如,增量内存数据的数据大小为x,则目标内存数据的数据大小可以设置为y,y为大于0,且小于或者等于x的数值。
22.由以上第一方面第九种可能的实现方式可知,通过对增量内存数据进行内存数据的个数和总大小的限制,从而提升检测设备的检测性能。
23.可选地,结合上述第一方面第八种或第九种可能的实现方式,在第一方面第十种可能的实现方式中,检测设备根据映像内存数据生成重建文件,包括:根据映像内存数据的文件头确定重建文件的文件头;将映像内存数据中的文件节表拷贝至重建文件的文件头的尾部以得到重建文件的文件节表;根据映像内存数据中的节数据,确定重建文件的节数据,重建文件的节数据位于重建文件的文件节表的尾部,其中,映像内存数据中的节数据包含映像内存数据中的文件节表所包含的一个或多个节表中每个节表对应的节数据,重建文件的节数据包含每个节表对应的节数据中的有效数据;根据重建文件的节数据中每个节数据的位置信息,对重建文件的文件节表或重建文件的文件头进行目标处理,以得到重建文件,目标处理包括如下中的一种或多种:偏移修正、数据修正。
24.可选地,结合上述第一方面第十种可能的实现方式,在第一方面第十一种可能的实现方式中,重建文件的文件头与映像内存数据的文件头相同。具体的,检测设备从映像内存数据中将映像内存数据的文件头直接拷贝至重建文件的头部。
25.可选地,结合上述第一方面第十种或第十一种可能的实现方式,在第一方面第十二种可能的实现方式中,重建文件的文件头采用预先构造的预置文件头,不是根据映像内存数据来生成重建文件的文件头。预置文件头是一种通用的文件头。检测设备根据映像内存数据生成重建文件的具体方式包括:确定重建文件的文件头为预置文件头;将映像内存数据中的文件节表拷贝至预置文件头的尾部以得到重建文件的文件节表;根据映像内存数据中的节数据,确定重建文件的节数据,重建文件的节数据位于重建文件的文件节表的尾部,其中,映像内存数据中的节数据包含映像内存数据中的文件节表所包含的一个或多个节表中每个节表对应的节数据,重建文件的节数据包含每个节表对应的节数据中的有效数据,为了避免重构文件的文件中包含太多的无效数据,检测设备在拷贝节数据的过程中,对节数据进行有效数据识别,并根据文件头中的文件对齐数据,对节数据中的尾部无效数据进行删减;根据重建文件的节数据中每个节数据的位置信息,对重建文件的文件节表或重建文件的文件头进行目标处理,以得到重建文件,目标处理包括如下中的一种或多种:偏移修正、数据修正。可选地,上述步骤中,无效数据的识别方法采用如下方式:节数据的尾部数据超过文件对齐数据长度的连续单字节或多字节(例如:2~8个)重复数据,即为无效数据。
26.本技术第二方面提供一种恶意文件的检测装置,包括:获取模块,用于在虚拟运行环境中运行测试文件,以获取测试文件的运行数据,运行数据包括增量内存数据和参数数
据中的至少一种,增量内存数据为第一内存空间中存储的数据,第一内存空间为测试文件在运行过程中所申请的内存,参数数据包括第一调用参数集合中每个参数对应的数据,第一调用参数集合包括测试文件在运行过程中一次或多次调用目标函数时采用的参数,目标函数属于预定函数集合;生成模块,用于根据获取模块获取的运行数据生成至少一个重构文件;静态检测模块,用于对生成模块生成的所述至少一个重构文件进行静态检测,根据静态检测的结果判断测试文件是否为恶意文件。
27.可选地,结合上述第二方面,在第二方面第一种可能的实现方式中,增量内存数据包括第一数据和第二数据,第一数据为第二内存空间中存储的数据,第二内存空间为所述测试文件在运行过程中申请且释放的内存,第二数据为第三内存空间中存储的数据,第三内存空间为测试文件在运行过程中申请且运行结束后未释放的内存,当运行数据包括所述增量内存数据时,获取模块,用于获取第二调用参数集合以及第三调用参数集合,其中,第二调用参数集合包括测试文件在运行过程中多次调用内存申请函数时采用的参数,测试文件每次调用内存申请函数时采用一个第二调用参数集合中的参数,第二调用参数集合中的参数用于指示第一内存空间的内存地址,第三调用参数集合包括测试文件在运行过程中一次或多次调用内存释放函数时采用的参数,测试文件每次调用内存释放函数时采用一个第三调用参数集合中的参数,第三调用参数集合中的参数用于指示第二内存空间的内存地址;从第二内存空间的内存地址中获取第一数据;测试文件在虚拟运行环境运行结束后,根据第一内存空间的内存地址和第二内存空间的内存地址确定第三内存空间的内存地址,并从第三内存空间的内存地址中获取第二数据。
28.可选地,结合上述第二方面或第二方面第一种可能的实现方式,在第一方面第二种可能的实现方式中,当运行数据包括参数数据时,获取模块,用于获取测试文件一次或多次调用目标函数时采用的参数,从而获得第一调用参数集合;从第一调用参数集合中的每个参数的指针所指向的内存地址中获取参数数据。
29.可选地,结合上述第二方面、第二方面第一种至第二种中任意一种可能的实现方式,在第二方面第三种可能的实现方式中,参数数据为第一调用参数集合中的参数的指针所指向的内存地址中满足预置条件的数据,预置条件包括以下中的至少一种:参数数据的数据类型为字符串类型、参数数据的数据长度大于或等于预置长度、测试文件的运行过程中首次出现的参数数据。
30.可选地,结合上述第二方面、第二方面第一种至第三种中任意一种可能的实现方式,在第二方面第四种可能的实现方式中,运行数据还包括映像内存数据,映像内存数据为第四内存空间在测试文件在运行结束后存储的数据,第四内存空间是操作系统为初始映像数据分配的内存空间,初始映像数据为虚拟运行环境运行测试文件的初始化阶段从硬盘加载到内存中的数据。
31.可选地,结合上述第二方面第四种可能的实现方式,在第二方面第五种可能的实现方式中,当运行数据包括增量内存数据和映像内存数据时,至少一个重构文件包括第一重构文件,生成模块,用于根据增量内存数据和映像内存数据生成第一重构文件;对应地,静态检测模块,用于对生成模块生成的第一重构文件进行静态检测,根据静态检测的结果判断测试文件是否为恶意文件。
32.可选地,结合上述第二方面第四种可能的实现方式,在第二方面第六种可能的实
现方式中,当运行数据包括增量内存数据、参数数据和映像内存数据时,至少一个重构文件包括第二重构文件,生成模块,用于根据增量内存数据、参数数据和映像内存数据生成第二重构文件;对应地,静态检测模块,用于对生成模块生成的第二重构文件进行静态检测,根据静态检测的结果判断测试文件是否为恶意文件。
33.可选地,结合上述第二方面第六种可能的实现方式,在第二方面第七种可能的实现方式中,至少一个重构文件还包括第三重构文件,生成模块,还用于根据增量内存数据和映像内存数据生成第三重构文件;对应地,静态检测模块,用于分别对生成模块生成的第二重构文件和第三重构文件进行静态检测,当第二重构文件和第三重构文件中的任意一个文件被检测为恶意文件时,确定测试文件为恶意文件。
34.可选地,结合上述第二方面第六种或第七种可能的实现方式,在第二方面第八种可能的实现方式中,所述生成模块,用于根据所述映像内存数据生成重建文件;将目标内存数据和所述参数数据依次写入所述重建文件的尾部,以得到所述第二重构文件,其中,所述目标内存数据是根据所述增量内存数据确定的。
35.可选地,结合上述第二方面第八种可能的实现方式,在第二方面第九种可能的实现方式中,生成模块,还用于根据增量内存数据确定目标内存数据,其中,目标内存数据包含的内存数据的个数为第一取值,第一取值小于或等于增量内存数据包含的内存数据的个数,目标内存数据的数据大小为第二取值,第二取值小于或等于增量内存数据的数据大小。
36.可选地,结合上述第二方面第八种或第九种可能的实现方式,在第二方面第十种可能的实现方式中,生成模块,用于根据映像内存数据的文件头确定重建文件的文件头;将映像内存数据中的文件节表拷贝至重建文件的文件头的尾部以得到重建文件的文件节表;根据映像内存数据中的节数据,确定重建文件的节数据,重建文件的节数据位于重建文件的文件节表的尾部,其中,映像内存数据中的节数据包含映像内存数据中的文件节表所包含的一个或多个节表中每个节表对应的节数据,重建文件的节数据包含每个节表对应的节数据中的有效数据;根据重建文件的节数据中每个节数据的位置信息,对重建文件的文件节表或重建文件的文件头进行目标处理,以得到重建文件,目标处理包括如下中的一种或多种:偏移修正、数据修正。
37.可选地,结合上述第二方面第十种可能的实现方式,在第二方面第十一种可能的实现方式中,重建文件的文件头与映像内存数据的文件头相同。
38.可选地,结合上述第二方面第十种或第十一种可能的实现方式,在第二方面第十二种可能的实现方式中,生成模块,用于确定建文件的文件头为预置文件头;将映像内存数据中的文件节表拷贝至预置文件头的尾部以得到重建文件的文件节表;根据映像内存数据中的节数据,确定重建文件的节数据,重建文件的节数据位于重建文件的文件节表的尾部,其中,映像内存数据中的节数据包含映像内存数据中的文件节表所包含的一个或多个节表中每个节表对应的节数据,重建文件的节数据包含每个节表对应的节数据中的有效数据;根据重建文件的节数据中每个节数据的位置信息,对重建文件的文件节表或重建文件的文件头进行目标处理,以得到重建文件,目标处理包括如下中的一种或多种:偏移修正、数据修正。
39.本技术第三方面提供一种计算机设备,该计算机设备包括处理器和存储器。存储器用于存储计算机可读指令(或者称之为计算机程序),处理器用于读取所述计算机可读指
令以实现前述第一方面或第一方面的任一可能的实现方式中的方法。
40.在一些实现方式下,该计算机设备还包括收发器,用于接收和发送数据。
41.本技术第四方面提供一种计算机存储介质,该计算机存储介质可以是非易失性的。该计算机存储介质中存储有计算机可读指令,当该计算机可读指令被处理器执行时实现第一方面或第一方面的任一可能的实现方式中的方法。
42.本技术实施例采用一种恶意文件的检测方法,通过获取测试文件在虚拟运行环境中的运行数据,该运行数据包括测试文件的运行过程中申请的内存中的增量内存数据和测试文件在运行过程一次或多次调用目标函数所采用的每个第一调用参数对应的参数数据中的至少一种,然后基于运行数据确定至少一个能够描述测试文件在执行过程中的行为信息的重构文件,最后基于该至少一个重构文件的静态检测结果判断测试文件是否为恶意文件,从而有效的解决传统静态检测方法中无法对加壳和加密文件进行有效检测的问题。
附图说明
43.图1是本技术实施例提供的恶意文件的检测方法的应用场景示意图;
44.图2是本技术实施例提供的计算机设备的结构示意图;
45.图3是本技术实施例提供的恶意文件的检测方法的一个实施例示意图;
46.图4是本技术实施例提供的恶意文件的检测方法的另一个实施例示意图;
47.图5是本技术实施例提供的恶意文件的检测方法的另一个实施例示意图;
48.图6是本技术实施例提供的第二重构文件的生成方法的一个实施例示意图;
49.图7(a)是本技术实施例提供的根据增量内存数据、参数数据和映像内存数据生成第二重构文件的各部分数据组织关系示意图;
50.图7(b)是本技术实施例提供的基于映像内存数据生成重建文件的各部分数据的数据组织关系的示意图;
51.图7(c)是本技术实施例提供的基于映像内存数据生成重建文件的各部分数据的另一种数据组织关系的示意图;
52.图8是本技术实施例提供的恶意文件的检测方法的另一个实施例示意图;
53.图9是本技术实施例提供的恶意文件的检测方法的流程示意图;
54.图10是本技术实施例提供的恶意文件的检测装置的结构示意图。
具体实施方式
55.下面结合附图,对本技术的实施例进行描述。随着新应用场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
56.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。在本技术中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间/逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。图1为本技术实施例提供恶意文件的检测方法的应用场景示意图。
57.如图1所示,本技术实施例涉及的应用场景包括网络设备101、用户设备102、互联
网103和虚拟运行环境1011。可选地,用户设备102是位于如企业的局域网等内部网络中的用户设备;网络设备101是位于内部网络和互联网之间的防火墙、安全网关设备、或者具备安全功能的路由器等等设备。网络设备101用于对用户设备102和互联网103之间的通信数据进行安全保护。可选地,本技术实施例中,虚拟运行环境1011是指沙箱(sandbox)。可选地,虚拟运行环境1011通过专业的软件产品实现,也可以通过虚拟机实现。
58.可选地,虚拟运行环境1011运行于网络设备101的内部。网络设备101通过在虚拟运行环境1011中运行测试文件,从而执行本技术后续实施例所介绍的恶意文件的检测方法。
59.可选地,用于执行本技术后续实施例所介绍的恶意文件的检测方法的设备包括但不限于图1中的网络设备101、用户设备102。
60.可选地,本技术实施例涉及的应用场景还包括检测设备104。在这种情况下,虚拟运行环境1011位于检测设备104上,而不再是运行在网络设备101上。该检测设备104独立于网络设备101,且与网络设备101连接。可选地,该检测设备104是一个沙箱设备,或者是集成了沙箱功能的其他类型的计算机设备,本技术实施例对于检测设备104的类型不作具体限定。
61.本技术实施例中,虚拟运行环境1011与运行虚拟运行环境1011的主机的真实运行环境相隔离,主机允许在该虚拟运行环境内运行浏览器或其他程序,运行浏览器或其他程序所产生的变化随后能够被删除。在虚拟运行环境1011内部运行的程序不会对运行虚拟运行环境1011的主机的硬盘产生永久性的影响。
62.从硬件结构上来描述,可选地,运行虚拟运行环境1011的网络设备101或检测设备104由同一个实体设备实现,或者由多个实体设备共同实现,或者实体设备内的一个逻辑功能模块,本技术实施例对此不作具体限定。运行该虚拟运行环境1011的网络设备101或检测设备104可以通过如图2所示结构的计算机设备20来实现。
63.该计算机设备20包括:网络接口201、处理器202、存储器203和总线系统204。
64.其中,存储器203,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。存储器203可能为随机存取存储器(random access memory,ram),也可能为非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。图中仅示出了一个存储器,当然,存储器也能够根据需要,被设置为多个。可选地,存储器203是处理器202中的存储器。
65.存储器203存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
66.操作指令:包括各种操作指令,用于实现各种操作。
67.操作系统:包括各种系统程序,用于实现各种基础业务或者处理基于硬件的任务。
68.处理器202控制网络设备20的操作,可选地,处理器202是中央处理单元(central processing unit,cpu)。具体的应用中,计算机设备20的各个组件通过总线系统204耦合在一起,其中总线系统204除包括数据总线之外,可选地,还包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统204。为便于表示,图2中仅是示意性画出。
69.后文中所介绍的本技术实施例提供的恶意文件的检测方法应用于处理器202中,
或者由处理器202实现。
70.处理器202可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器202中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器202可以是通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器203,处理器202读取存储器203中的信息,结合其硬件执行后文中检测设备所执行的方法步骤。
71.在一些实现方式中,存储器203用于存储执行本技术方案的计算机执行指令,并由处理器202来控制执行。处理器202用于执行存储器203中存储的计算机执行指令,从而实现本技术实施例提供的恶意文件的检测方法。
72.基于上述的应用场景以及运行虚拟运行环境的设备,接下来将对本技术实施例提供的恶意文件的检测方法进行介绍。
73.如图3所示,为本技术实施例提供的恶意文件的检测方法的一个实施例示意图。
74.参阅图3,本技术实施例提供的恶意文件的检测方法的一个实施例,包括如下步骤301-步骤303。
75.301、检测设备在虚拟运行环境运行测试文件,以获取该测试文件的运行数据,该运行数据包括增量内存数据和参数数据中的至少一种,该增量内存数据为第一内存空间中存储的数据,第一内存空间为测试文件在运行过程中所申请的内存,该参数数据包括第一调用参数集合中每个参数对应的数据,该第一调用参数集合包括测试文件在运行过程中一次或多次调用目标函数时采用的参数,目标函数属于预定函数集合。
76.本技术实施例中的检测设备为运行虚拟运行环境的计算机设备,测试文件为待检测是否为恶意文件的文件。当图1中的虚拟运行环境1011集成在图1中的网络设备101上时,本技术实施例中的检测设备为网络设备10。网络设备101从网络中获取用户设备102和互联网103之间的通信数据后,通过流量还原技术得到通信数据中传输的文件,即测试文件,然后将该测试文件输入虚拟运行环境中运行。当图1中的虚拟运行环境1011位于检测设备104上时,本技术实施例中的检测设备即为检测设备104,由网络设备101从网络中获取用户设备102和互联网103之间的通信数据,通过流量还原技术得到通信数据中传输的文件为测试文件,然后将该测试文件发送给检测设备104,检测设备104将测试文件输入虚拟运行环境中运行。可选地,网络设备101也可以利用端口镜像功能将用户设备102和互联网103之间的通信数据发送给检测检测设备104,由检测设备104执行流量还原从而得到测试文件。
77.本技术实施例中,检测设备在获取到待检测的测试文件之后,首先将测试文件输入虚拟运行环境中运行,然后对测试文件的运行过程进行监控,从而获取测试文件的运行数据。可选地,在实际的应用过程中,检测设备通过开启对虚拟运行环境的应用编程接口
(application programming interface,api)监控从而实现对测试文件的运行过程的监控。
78.本技术实施例中,检测设备获取的运行数据包括增量内存数据和参数数据中的至少一种。
79.本技术实施例中,增量内存数据是第一内存空间中存储的数据。第一内存空间为测试文件在运行过程中所申请的内存。具体的,测试文件在运行过程中会对检测设备发起一次或多次的内存申请,从而实现各种动态行为,例如系统服务请求、文件读写、注册表修改、api调用或网络访问等。例如,测试文件在运行过程中会通过调用一次或多次内存申请函数从而实现对检测设备的一次或多次的内存申请,基于该一次或多次申请的内存,实现测试文件对于检测设备的一系列动态行为。检测设备通过截获测试文件每一次的调用内存申请函数的调用参数,确定测试文件每一次申请的内存的地址信息。本技术实施例中的第一内存空间为测试文件在运行过程中申请的内存,包括测试文件在运行过程中每一次调用内存申请函数所申请的内存。第一内存空间中存储的数据即为本技术实施例中的增量内存数据。在后续检测的过程中,增量内存数据用于确定测试文件的运行过程是否存在恶意行为,从而作为测试文件是否为恶意文件的判断依据。
80.可选地,本技术实施例中的增量内存数据包括第一数据和第二数据两个部分。第一数据为第二内存空间中存储的数据,该第二内存空间为测试文件在运行过程中申请且释放的内存。第二数据为第三内存空间中存储的数据,第三内存空间为测试文件在运行过程中申请且运行结束后未释放的内存。本技术实施例中,检测设备通过分别获取第一数据和第二数据从而得到增量内存数据。
81.可选地,本技术实施例中,检测设备通过如下步骤(1)-步骤(3)的方法获取增量内存数据。
82.(1)检测设备获取第二调用参数集合,第二调用参数集合包括测试文件在运行过程中多次调用内存申请函数时采用的参数。
83.本技术实施例中,测试文件在运行过程中会至少调用两次内存申请函数进行内存的申请,测试文件每一次调用内存申请函数采用一个参数。本技术实施例中,检测设备获取测试文件在运行过程中每一次调用内存申请函数所采用的参数,并记录每一个参数的参数指针所指向的内存空间的内存地址,从而得到第二调用参数集合。第二调用参数集合包含多个参数,该多个参数即为测试文件多次调用内存申请函数时采用的参数。检测设备获取的第二调用参数集合中的参数的指针所指向的多个内存空间的总和即为本技术实施例中的第一内存空间。
84.例如:测试文件在运行过程中共调用了三次内存申请函数,第一次调用内存申请函数所采用的参数为参数a,参数a的参数指针所指向的内存为内存a,第二次调用内存申请函数所采用的参数为参数b,参数b的参数指针所指向的内存为内存b,第三次调用内存申请函数所采用的参数为参数c,参数c的参数指针所指向的内存为内存c,则第一内存空间包括内存a、内存b和内存c。
85.(2)检测设备获取第三调用参数集合,第三调用参数集合包括测试文件在运行过程中一次或多次调用内存释放函数时采用的参数,并获取第三调用参数集合中的参数所指示的第二内存空间中的数据,以得到第一数据。
86.本技术实施例中,测试文件在运行时会通过调用一次或多次内存释放函数进行内存的释放。本技术实施例中,检测设备获取测试文件在运行过程中每一次调用内存释放函数所采用的参数,以得到第三调用参数集合。当测试文件在运行过程中共调用了一次或多次内存释放函数时,检测设备获取该一次或多次中每一次调用内存释放函数所采用的参数。其中,每调用一次内存释放函数对应获取一个参数,最终得到包含一个或多个参数的第三调用参数集合。检测设备记录第三调用参数集合中包含的每个参数的指针所指向的内存空间的内存地址,并获取该每个参数的指针所指向的内存空间的内存地址中的数据,从而得到第一数据。本技术实施例中,第二内存空间为第三调用参数集合中的每个参数的指针所指向的内存空间的总和。
87.例如,测试文件在运行过程中共调用了三次内存申请函数申请了内存a、内存b和内存c,在使用完内存a和内存b后,测试文件分别调用了两次内存释放函数对内存a和内存b进行释放,内存a和内存b即为本技术实施例中的第二内存空间。测试文件在第一次调用内存释放函数时采用的参数为参数m,参数m的参数指针指向内存a,检测设备在获取到参数m时,会在内存a被释放之前,获取内存a中的数据。测试文件在第二次调用内存释放函数时采用的函数为参数n,参数n的参数指针指向内存b,检测设备在获取到参数n时,会在内存b被释放之前,获取内存b中的数据。内存a中的数据和内存b中的数据即为第一数据。
88.(3)当测试文件在虚拟运行环境运行结束后,检测设备根据第一内存空间的内存地址和第二内存空间的内存地址确定第三内存空间的内存地址,并从第三内存空间的内存地址中获取第二数据。
89.本技术实施例中,第三内存空间为测试文件在运行过程中申请但未释放的内存。当测试文件在虚拟运行环境运行结束后,检测设备根据预先记录的第一内存空间的内存地址和第二内存空间的内存地址确定第三内存空间的内存地址,然后从第三内存空间中获取第二数据。
90.例如,第一内存空间为内存a、内存b和内存c,第二内存空间为内存a和内存b,则第三内存空间即为内存c。在测试文件运行结束后,检测设备通过内存申请时所记录的内存a、内存b和内存c,以及内存释放时所记录的内存a和内存b,得到申请但未释放的内存c的地址信息,然后从内存c中获取第二数据。
91.经过上述的方法获取到第一数据和第二数据后,就可以得到本技术实施例中的增量内存数据。
92.本技术实施例中,参数数据包括第一调用参数集合中每个参数对应的数据。第一调用参数集合包括测试文件在运行过程中一次或多次调用目标函数时采用的参数,测试文件在运行过程中每调用一次目标函数,检测设备对应获取测试文件调用该目标函数采用的一个参数。目标函数属于预定函数集合。本技术实施例中的预定函数集合包含一个或多个目标函数,该一个或多个目标函数可以进行预先设定。具体的,由于测试文件在运行期间还会对一些函数进行调用,从而实现各种动态行为,例如,测试文件通过对一个或多个函数进行调用,从而执行请求系统服务、文件读写、注册表修改、api调用、网络访问等一系列行为。因此,通过设置该包含有一个或多个目标函数的预定函数集合,使得检测设备监测测试文件对这些目标函数的调用,进而获取调用目标函数的有关数据,如本技术实施例中的参数数据,作为测试文件是否为恶意文件的判断依据。
93.例如,本技术实施例提供一种预定函数集合,如表1所示。该预定函数集合中包含了多个目标函数(为简明起见,表1中仅列出了函数名)。需要说明的是,表1只是一种示例性说明,不应理解为本技术的限制。可选地,在实际应用过程中,预定函数集合包含表1中的部分函数或全部函数。或者,预定函数集合不仅包含表1中的部分或全部函数,还包含其他函数。可选地,在某些情况下,预定函数集合不包含表1中的任意一种函数。本技术实施例对预定函数集合包含的目标函数的类型和数量不作具体限定。
94.表1一种预定函数集合
95.96.97.98.99.[0100][0101]
本技术实施例中,目标函数是指预定函数集合中的任意一个目标函数。本技术实施例中,检测设备获取测试文件每一次调用目标函数时所采用的参数,从而得到测试文件在运行过程中一次或多次调用目标函数的一个或多个参数,第一调用参数集合包含该一个或多个参数。检测设备获取第一调用参数集合中每个参数对应的数据,从而得到参数数据。具体的,第一调用参数集合中每个参数对应的数据可能是一类数据型数据,也可能是参数指示指向的地址,例如字符串、一些小的数据结构等等。
[0102]
可选地,本技术实施例中,为了兼顾检测设备的性能,检测设备在获取参数数据的过程中设置预置条件,满足预置条件的数据才能被确定为参数数据。该预置条件可以是如下条件中的一个或多个:参数数据的数据类型为字符串类型、参数数据的数据长度大于或
等于预置长度、测试文件的运行过程中首次出现的参数数据。需要说明的是,预置条件还可以包括其他类型的条件,本技术实施例对此不作具体限定。例如,当预置条件包括“参数数据的数据类型为字符串类型”这一条件时,检测设备在获取参数数据时,会从每个第一调用参数所对应的数据中筛选出数据类型为字符串类型的数据作为参数数据。例如,当预置条件包括“参数数据的数据类型为字符串类型”和“测试文件的运行过程中首次出现的参数数据”这两个条件时,检测设备在获取参数数据时,会对第一调用参数集合中每个参数所对应的数据进行筛选,在满足参数数据的数据类型为字符串类型的同时,还需要满足是测试文件在运行过程中首次出现的参数数据时,才能被筛选为参数数据。
[0103]
可选地,本技术实施例中检测设备获取的运行数据只包含增量内存数据和参数数据中的一种。可选地,本技术实施例中检测设备获取的运行数据能够同时包含增量内存数据和参数数据这两类数据。可选地,检测设备获取的运行数据除了包含增量内存数据和参数数据中的至少一种之外,还能包含其他的数据,本技术实施例对此不作限定。
[0104]
302、检测设备根据该运行数据生成至少一个重构文件。
[0105]
本技术实施例中,当测试文件在虚拟运行环境中运行结束后,检测设备会根据获取的运行数据确定至少一个重构文件。当获取的运行数据中包含的数据类型不同时,根据运行数据生成的至少一个重构文件也有所不同。
[0106]
例如,当运行数据包括增量内存数据或参数数据时,该至少一个重构文件为基于增量内存数据或参数数据生成的文件。例如,若运行数据只包括增量内存数据或只包括参数数据,则该至少一个重构文件即为增量内存数据或参数数据。若运行数据除了包括增量内存数据或参数数据,还包括其他数据,则该至少一个重构文件的数量可以是1,该重构文件是根据增量内存数据或参数数据,以及该其他数据生成的;或者该至少一个重构文件的数量为2,其中一个重构文件为增量内存数据或参数数据,另一个重构文件是根据增量内存数据或参数数据,以及该其他数据生成的一个文件。
[0107]
可选地,当运行数据同时包括增量内存数据和参数数据时,该至少一个重构文件的数量为1,重构文件是根据增量内存数据和参数数据生成的文件,例如是由增量内存数据和参数数据重新组合而成的一个文件。可选地,当运行数据同时包括增量内存数据和参数数据时,该至少一个重构文件的数量是2,其中的一个重构文件可以是增量内存数据和参数数据中的任意一个,另一个重构文件是增量内存数据和参数数据中的另一个。可选地,当运行数据同时包括增量内存数据和参数数据时,该至少一个重构文件的数量是2,其中的一个重构文件可以是增量内存数据和参数数据中的任意一个,另一个重构文件是由增量内存数据和参数数据重新组合而成的一个文件。
[0108]
当运行数据中除了包括增量内存数据和参数数据之外,还包括其他数据,则至少一个重构文件的数量可以是1、2或3。增量内存数据、参数数据和其他数据三者的任意组合均能够作为一个重构文件用于进行后续的静态检测。
[0109]
303、检测设备对该至少一个重构文件进行静态检测,根据静态检测的结果判断测试文件是否为恶意文件。
[0110]
本技术实施例中,检测设备在根据该运行数据确定至少一个重构文件之后,会分别对该至少一个重构文件中的每个重构文件进行静态检测。当该至少一个重构文件中的任意一个重构文件的静态检测结果显示为恶意文件时,确定测试文件为恶意文件。
[0111]
本技术实施例中,对文件进行静态检测的具体方法可以是现有技术中恶意文件的静态检测技术中的任意一种,本技术实施例对此不作限定,且不进行赘述。
[0112]
本技术实施例采用一种恶意文件的检测方法,通过获取测试文件在虚拟运行环境中的运行数据,该运行数据包括测试文件的运行过程中申请的内存中的增量内存数据和测试文件在运行过程一次或多次调用目标函数所采用的每个第一调用参数对应的参数数据中的至少一种,然后基于运行数据确定至少一个能够描述测试文件在执行过程中的行为信息的重构文件,最后基于该至少一个重构文件的静态检测结果判断测试文件是否为恶意文件,从而能够有效的解决传统静态检测方法中无法对加壳和加密文件进行有效检测的问题。
[0113]
基于图3中的实施例,当检测设备获取的运行数据中包含增量内存数据和映像内存数据时,本技术实施例提供的恶意文件的检测方法的另一个实施例,如图4所示。
[0114]
图4为本技术实施例提供的恶意文件的检测方法的另一个实施例示意图。
[0115]
参阅图4,本技术实施例提供的恶意文件的检测方法的另一个实施例,包括如下的步骤401-步骤403。
[0116]
401、检测设备在虚拟运行环境运行测试文件,以获取该测试文件的运行数据,该运行数据包括增量内存数据和映像内存数据。
[0117]
本技术实施例中的检测设备为运行虚拟运行环境的计算机设备,测试文件为待检测是否为恶意文件的文件。具体可以参阅图3的步骤301中的相关内容进行理解,此处不再赘述。
[0118]
本技术实施例中,检测设备在获取到待检测的测试文件之后,首先将测试文件输入虚拟运行环境中运行,然后对测试文件的运行过程进行监控,从而获取测试文件的运行数据。
[0119]
本技术实施例中,检测设备获取的测试文件的运行数据,包括增量内存数据和映像内存数据。
[0120]
其中,增量内存数据可以参阅图3的步骤301中的相关内容进行理解,此处不再赘述。
[0121]
检测设备在将测试文件输入至虚拟运行空间中运行的过程中,检测设备的操作系统首先会为测试文件分配一个特定的内存空间,用于加载虚拟运行环境运行测试文件的初始化阶段的初始映像数据。测试文件在虚拟运行空间运行的过程中,该特定的内存空间中存储的数据可能会发生变化。本技术实施例中的映像内存数据为该特定的内存空间在测试文件在运行结束后存储的数据。在测试文件运行结束后,检测设备会从该特定的内存空间中获取映像内存数据。
[0122]
402、检测设备根据运行数据生成第一重构文件。
[0123]
本技术实施例中,检测设备在获取测试文件的运行数据之后,根据该运行数据生成第一重构文件,即检测设备根据增量内存数据和映像内存数据生成第一重构文件。可选地,在实际应用的过程中,检测设备在获取增量内存数据和映像内存数据之后,直接将增量内存数据和映像内存数据保存为一个单独的文件,这个单独的文件即为第一重构文件。
[0124]
403、检测设备对第一重构文件进行静态检测,根据静态检测的结果判断测试文件是否为恶意文件。
[0125]
本技术实施例中,检测设备在生成第一重构文件后,对第一重构文件进行静态检测,当第一重构文件的静态检测结果指示第一重构文件为恶意文件时,检测设备可以确定测试文件为恶意文件。
[0126]
本技术实施例中,对文件进行静态检测的具体方法参考现有技术中恶意文件的静态检测技术中的任意一种进行理解,本技术实施例对此不作限定,且不进行赘述。
[0127]
本技术实施例采用一种恶意文件的检测方法,检测获取测试文件在虚拟运行环境中的运行数据,该运行数据包括测试文件的运行过程中申请的内存中的增量内存数据和测试文件在运行结束后的映像内存数据。检测设备进一步基于运行数据确定一个能够描述测试文件在执行过程中的行为信息的第一重构文件,最后基于该第一重构文件的静态检测结果判断测试文件是否为恶意文件,从而有效的解决传统静态检测方法中无法对加壳和加密文件进行有效检测的问题。
[0128]
基于图3中的实施例,当检测设备获取的运行数据中包含增量内存数据、参数数据和映像内存数据时,本技术实施例提供的恶意文件的检测方法的另一个实施例,如图5所示。
[0129]
图5为本技术实施例提供的恶意文件的检测方法的另一个实施例示意图。
[0130]
参阅图5,本技术实施例提供的恶意文件的检测方法的另一个实施例,包括如下的步骤501-步骤503。
[0131]
501、检测设备在虚拟运行环境运行测试文件,以获取该测试文件的运行数据,该运行数据包括增量内存数据、参数数据和映像内存数据。
[0132]
本技术实施例中,检测设备在获取到待检测的测试文件之后,首先将测试文件输入虚拟运行环境中运行,然后对测试文件的运行过程进行监控,从而获取测试文件的运行数据。本技术实施例中,检测设备获取的测试文件的运行数据包括增量内存数据、参数数据和映像内存数据。
[0133]
本技术实施例可以参阅图3中的步骤301以及图4中的步骤401中的相关内容进行理解,此处不再赘述。
[0134]
502、检测设备根据运行数据生成第二重构文件。
[0135]
本技术实施例中,检测设备在获取测试文件的运行数据之后,根据增量内存数据、参数数据和映像内存数据生成第二重构文件。
[0136]
可选地,本技术实施例中,检测设备根据增量内存数据、参数数据和映像内存数据生成第二重构文件的具体方式参阅如图6所示的方法。对应于图6所示的第二重构文件的生成流程,本技术实施例还提供了根据增量内存数据、参数数据和映像内存数据生成第二重构文件的各部分数据组织关系示意图,如图7(a)所示。本技术实施例还提供了两种不同的基于映像内存数据生成重建文件的各部分数据组织关系的示意图,如图7(b)和图7(c)所示。
[0137]
其中,图7(a)首先示出了虚拟运行环境中的堆栈空间、文件内存映像空间以及第一内存空间。其中,参数数据是检测设备在测试文件在虚拟运行环境的运行过程中从堆栈空间获取的。第一内存空间为测试文件在运行过程中所申请的内存,例如,测试文件在运行过程中调用了多次内存申请函数,则每次调用分别申请到一个内存块(或称为一个内存,如图7(a)中的内存1至内存max所示,其中max为大于1的自然数),多次调用对应于多个内存
块,第一内存空间包含该多个内存块,具体请参阅图3的步骤301中的相关内容进行理解,此处不再赘述。检测设备在测试文件在虚拟运行环境的运行过程中从第一内存空间中获取增量内存数据。文件内存映像空间即为检测设备的操作系统为初始映像数据分配的内存空间,具体请参阅图4的步骤401中的相关内容进行理解,此处不再赘述。检测设备在测试文件在虚拟运行环境的运行结束后,从文件内存映像空间获取映像内存数据。
[0138]
结合图7(a)和图7(b),接下来将对图6所示的方法,即检测设备根据增量内存数据、参数数据和映像内存数据生成第二重构文件的具体方法进行详细介绍,图6所示的方法包括如下的步骤5021-步骤5025。
[0139]
5021、检测设备确定重建文件的文件头。
[0140]
本技术实施例中,检测设备在根据增量内存数据、参数数据和映像内存数据生成第二重构文件时,首先需要确定重建文件的文件头。可选地,本技术实施例提供两种确定重建文件的文件头的方式。
[0141]
可选地,在第一种确定重建文件的文件头的实施方法中,重建文件的文件头可以与测试文件的映像内存数据具备相同的文件头。具体的,检测设备从映像内存数据中将映像内存数据的文件头直接拷贝至重建文件的头部。如图7(b)所示,检测设备从文件内存映像空间中提取映像内存数据的文件头,拷贝映像内存数据的文件头直接拷贝至重建文件的头部。
[0142]
需要说明的是,在上述的步骤401中,由于测试文件在被加载到特定的内存空间保存为初始映像数据时,检测设备通常会预留的较大的内存空间。因此本技术实施例中,检测设备在从映像内存数据中提取文件头数据时,可能会包括文件头尾部的一些无效数据,因此,在提取的时候选择只提取有效数据,有效数据的长度根据文件头的信息确定。
[0143]
可选地,在第二种确定重建文件的文件头的实施方法中,重建文件的文件头采用预先构造的预置文件头。换句话说,该预置文件头是一种通用的文件头。在第二种确定重建文件的文件头的实施方法中,直接将预置文件头作为重建文件的文件头,而不是根据映像内存数据来生成重建文件的文件头。如图7(c)所示,检测设备直接采用预置文件头作为重建文件的文件头。
[0144]
在具体实施过程中,本技术实施例不限定采用哪种方式来确定重建文件的文件头。
[0145]
5022、检测设备将映像内存数据中的文件节表拷贝至重建文件的文件头的尾部以得到重建文件的文件节表。
[0146]
本技术实施例中,检测设备在确定重建文件的文件头之后,将映像内存数据中的文件节表,从该特定的内存空间中按照其原始的文件格式拷贝至重建文件的文件头的尾部以得到重建文件的文件节表。如图7(b)和图7(c)所示,检测设备从文件内存映像空间中提取文件节表,拷贝至重建文件的文件头的尾部。
[0147]
5023、检测设备根据映像内存数据中的节数据,确定重建文件的节数据,重建文件的节数据位于重建文件的文件节表的尾部,其中,映像内存数据中的节数据包含映像内存数据中的文件节表所包含的一个或多个节表中每个节表对应的节数据,重建文件的节数据包含每个节表对应的节数据中的有效数据。
[0148]
本技术实施例中,检测设备在确定重建文件的文件节表之后,再根据文件节表中
包含的一个或多个节表的信息,依次将每个节表对应的节数据拷贝至重建文件的文件节表的尾部。如图7(b)和图7(c)所示,检测设备将文件内存映像空间中的节数据拷贝至重建文件的文件节表的尾部。
[0149]
需要说明的是,测试文件在被加载到特定的内存空间保存为初始映像数据时,节数据和文件头一样,检测设备通常也会预留的较大的内存空间。因此,本技术实施例中,为了避免重构文件的文件中包含太多的无效数据,检测设备在拷贝节数据的过程中,对节数据进行有效数据识别,并根据文件头中的文件对齐数据,对节数据中的尾部无效数据进行删减。可选地,节数据的有效数据的长度根据文件头的信息确定。可选地,无效数据的识别方法采用如下方式:节数据的尾部数据超过文件对齐数据长度的连续单字节或多字节(例如:2~8个)重复数据,即为无效数据。
[0150]
5024、检测设备根据重建文件的节数据中每个节数据的位置信息,对重建文件的文件节表或重建文件的文件头进行目标处理,以得到重建文件,目标处理包括如下中的一种或多种:偏移修正、数据修正。
[0151]
本技术实施例中,检测设备在生成重建文件的节数据之后,会根据重建文件中每个节数据的位置信息,对重建文件的文件节表或重建文件的文件头进行目标处理,以得到重建文件。其中,目标处理包括如下中的一种或多种:偏移修正、数据修正。
[0152]
例如:文件节表中会存放文件的文件偏移和数据大小,对于映像内存数据中的数据节来说,其中存放的是未初始化数据,数据在执行加载到内存时进行初始化,这个数据节的文件大小始终都是0,然而内存大小却不是0。因此,在将这个数据节的数据进行提取,并拷贝至重建文件中时,需要修改文件节表的数据大小信息为实际提取的数据大小,以说明该数据节的数据内存的大小,并且后面的其他数据节的文件偏移为了能够正确指向数据的位置,其偏移地址也要顺延。由于在进行文件的重构时,数据的偏移可能会发生变化,可能导致对应的文件内存映像的大小,入口点偏移地址以及数据目录表的偏移地址均发生变化。这些变化如果不进行修正,会导致文件格式解析错误。影响文件的检测。文件的内存映像的大小修改为文件头的长度和所有数据节长度之和。文件的所有偏移地址的修正方法为:偏移地址所在重构文件的节起始地址减去原来的节起始地址再加上原偏移地址。文件头的文件映像大小的修正方法为:用重构文件的实际大小替换原大小。
[0153]
5025、检测设备将目标内存数据和参数数据依次附加到重构文件的尾部。
[0154]
本技术实施例中,检测设备在对重建文件的文件节表或重建文件的文件头进行目标处理得到重建文件之后,首先将目标内存数据附加在重建文件的尾部得到附加文件,然后再将参数数据附加在该附加文件的尾部得到第二重构文件。如图7(a)所示,在经过上述步骤5021-步骤5024生成重建文件之后,检测设备分别将从第一内存空间中获取的多个内存块中的数据附加在重建文件的尾部得到附加文件,然后再将从堆栈空间获取的参数数据依次附加在附件文件的尾部,从而得到第二重构文件。
[0155]
可选地,本技术实施例中,目标内存数据为步骤501中获取的增量内存数据。
[0156]
可选地,本技术实施例中,目标内存数据是根据该增量内存数据得到的数据。例如,检测设备根据装置性能,对附加在重建文件尾部的内存块的个数和增量内存数据的总大小进行限制,根据该限制对增量内存数据进行一些调整和修改得到满足内存块数量和总大小的目标内存数据。例如,测试文件在运行过程中共调用了q次内存申请函数,对应申请
了q个内存块,增量内存数据包含从该q个内存块中获取的数据,则目标内存数据设置为包含q个内存块中的p个内存块对应的数据,p为大于0,且小于或者等于q的数值。例如,增量内存数据的数据大小为x,则目标内存数据的数据大小可以设置为y,y为大于0,且小于或者等于x的数值。
[0157]
可选地,在一些应用场景中,检测设备对附加在附加文件尾部的参数数据的数据个数和大小进行进一步的限制,本技术对此不作限定。例如,检测设备在测试文件运行时获取的参数数据包含的数据的数目为m,实际附加在附加文件尾部的参数数据包含的数据的个数可以设置为n,n为大于0,且小于或者等于m的数值。例如,检测设备在测试文件运行时获取的参数数据的数据大小为l,实际附加在附加文件尾部的参数数据的数据大小可以设置为k,k为大于0,且小于或者等于l的数值。
[0158]
需要说明的是,上述检测设备根据增量内存数据、参数数据和映像内存数据生成第二重构文件的具体方式仅为一种示例性实施方式,可选地,在实际应用的过程中,还存在其他的方式生成第二重构文件,本技术实施例对此不作限定。
[0159]
503、检测设备对第二重构文件进行静态检测,根据静态检测的结果判断测试文件是否为恶意文件。
[0160]
本技术实施例中,检测设备在生成第二重构文件后,对第二重构文件进行静态检测,当第二重构文件的静态检测结果指示第二重构文件为恶意文件时,检测设备确定测试文件为恶意文件。
[0161]
本技术实施例中,对文件进行静态检测的具体方法参阅现有技术中恶意文件的静态检测技术中的任意一种进行理解,本技术实施例对此不作限定,且不进行赘述。
[0162]
本技术实施例采用一种恶意文件的检测方法,通过获取测试文件在虚拟运行环境中的运行数据,该运行数据包括测试文件的运行过程中申请的内存中的增量内存数据、测试文件在运行过程一次或多次调用目标函数所采用的每个第一调用参数对应的参数数据和测试文件在运行结束后的映像内存数据,基于运行数据确定一个能够描述测试文件在执行过程中的行为信息的第二重构文件,最后基于该第二重构文件的静态检测结果判断测试文件是否为恶意文件,从而有效的解决传统静态检测方法中无法对加壳和加密文件进行有效检测的问题。
[0163]
基于图3中的实施例,当检测设备获取的运行数据中包含增量内存数据、参数数据和映像内存数据时,本技术实施例提供的恶意文件的检测方法的另一个实施例,如图8所示,图8包括步骤701至步骤703。
[0164]
本技术实施例还提供了对应于图8所示的恶意文件的检测方法的流程示意图,如图9所示。接下来将结合图9,对图8中的恶意文件的检测方法的具体流程进行详细介绍。
[0165]
701、检测设备在虚拟运行环境运行测试文件,以获取该测试文件的运行数据,该运行数据包括增量内存数据、参数数据和映像内存数据。
[0166]
本技术实施例可以参阅图5中的步骤501进行理解,此处不再赘述。具体请参阅图9中的流程图理解,图9中的虚拟运行环境中的堆栈空间、文件内存映像空间以及第一内存空间等内容请参阅图7(a)中的相关内容进行理解,此处不再赘述。
[0167]
702、检测设备根据运行数据生成第一重构文件和第二重构文件。
[0168]
本技术实施例中,检测设备在在获取测试文件的运行数据之后,根据增量内存数
据和映像内存数据生成第一重构文件,根据增量内存数据、参数数据和映像内存数据生成第二重构文件。其中,根据增量内存数据和映像内存数据生成第一重构文件的具体实施方式请参阅图4中的步骤402进行理解,根据增量内存数据、参数数据和映像内存数据生成第二重构文件的具体实施方式请参阅图5中的步骤502进行理解,此处不再赘述。增量内存数据、参数数据和映像内存数据和第一重构文件与第二重构文件的各部分数据组织关系请参阅图9中的流程图理解。
[0169]
703、检测设备对第一重构文件和第二重构文件进行静态检测,根据静态检测的结果判断测试文件是否为恶意文件。
[0170]
本技术实施例中,检测设备在生成第一重构文件和第二重构文件后,对第一重构文件和第二重构文件分别进行静态检测,如图9所示,当第一重构文件和第二重构文件中任意一个文件的静态检测结果被检测为恶意文件时,检测设备确定测试文件为恶意文件。
[0171]
本技术实施例中,对文件进行静态检测的具体方法参阅现有技术中恶意文件的静态检测技术中的任意一种进行理解,本技术实施例对此不作限定,且不进行赘述。
[0172]
本技术实施例采用一种恶意文件的检测方法,通过获取测试文件在虚拟运行环境中的运行数据,该运行数据包括测试文件的运行过程中申请的内存中的增量内存数据、测试文件在运行过程一次或多次调用目标函数所采用的每个第一调用参数对应的参数数据和测试文件在运行结束后的映像内存数据,基于运行数据分别确定两个能够描述测试文件在执行过程中的行为信息的不同的重构文件,当该两个不同的重构文件中任意一个重构文件的静态检测结果为恶意文件时,可以判断测试文件为恶意文件,本技术实施例提供的恶意文件的检测方法能够有效的解决传统静态检测方法中无法对加壳和加密文件进行有效检测的问题。
[0173]
上述对本技术实施例提供的恶意文件的检测方法进行了介绍,本技术实施例能够根据上述方法实施例对检测设备进行功能模块的划分,例如,对应各个功能划分各个功能模块,或者将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既能够采用硬件的形式实现,也能够采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时存在另外的划分方式。
[0174]
比如,以采用集成的方式划分各个功能模块的情况下,图10示出了一种恶意文件的检测装置的结构示意图。该检测装置80对应于图3-图7实施例中的检测设备。
[0175]
参阅图10,本技术实施例提供的恶意文件的检测装置80,包括:获取模块801、生成模块802和静态检测模块803。
[0176]
获取模块801,用于在虚拟运行环境中运行测试文件,以获取所述测试文件的运行数据,所述运行数据包括增量内存数据和参数数据中的至少一种,所述增量内存数据为第一内存空间中存储的数据,所述第一内存空间为所述测试文件在运行过程中所申请的内存,所述参数数据包括第一调用参数集合中每个参数对应的数据,所述第一调用参数集合包括所述测试文件在运行过程中一次或多次调用目标函数时采用的参数,所述目标函数属于预定函数集合。具体实现方式请参见图3所示实施例中步骤301的详细描述,此处不再赘述。
[0177]
生成模块802,用于根据所述获取模块801获取的所述运行数据生成至少一个重构文件。具体实现方式请参见图3所示实施例中步骤302的详细描述,此处不再赘述。
[0178]
静态检测模块803,用于对所述生成模块802生成的所述至少一个重构文件进行静态检测,根据所述静态检测的结果判断所述测试文件是否为恶意文件。具体实现方式请参见图3所示实施例中步骤303的详细描述,此处不再赘述。
[0179]
本技术实施例采用一种恶意文件的检测装置,通过获取测试文件在虚拟运行环境中的运行数据,该运行数据包括测试文件的运行过程中申请的内存中的数据和测试文件在运行过程一次或多次调用目标函数所采用的每个参数对应的参数数据中的至少一种,然后基于运行数据确定至少一个能够描述测试文件在执行过程中的行为信息的重构文件,最后基于该至少一个重构文件的静态检测结果判断测试文件是否为恶意文件,从而有效的解决传统静态检测方法中无法对加壳和加密文件进行有效检测的问题。
[0180]
可选地,作为一个实施例,所述增量内存数据包括第一数据和第二数据,所述第一数据为第二内存空间中存储的数据,所述第二内存空间为所述测试文件在运行过程中申请且释放的内存,所述第二数据为第三内存空间中存储的数据,所述第三内存空间为所述测试文件在运行过程中申请且运行结束后未释放的内存,当所述运行数据包括所述增量内存数据时,所述获取模块801,用于获取第二调用参数集合以及第三调用参数集合,其中,所述第二调用参数集合包括所述测试文件在运行过程中多次调用内存申请函数时采用的参数,所述测试文件每次调用所述内存申请函数时采用一个所述第二调用参数集合中的参数,所述第二调用参数集合中的参数用于指示所述第一内存空间的内存地址,所述第三调用参数集合包括所述测试文件在运行过程中一次或多次调用内存释放函数时采用的参数,所述测试文件每次调用所述内存释放函数时采用一个所述第三调用参数集合中的参数,所述第三调用参数集合中的参数用于指示所述第二内存空间的内存地址;从所述第二内存空间的内存地址中获取所述第一数据;当所述测试文件在所述虚拟运行环境运行结束后,根据所述第一内存空间的内存地址和所述第二内存空间的内存地址确定所述第三内存空间的内存地址,并从所述第三内存空间的内存地址中获取所述第二数据。具体实现方式请参见图3所示实施例中步骤301的详细描述、图4所示实施例中步骤401的详细描述、图5所示实施例中步骤501的详细描述和图8所示实施例中步骤701的详细描述,此处不再赘述。
[0181]
可选地,作为一个实施例,当所述运行数据包括所述参数数据时,所述获取模块801,用于获取所述测试文件一次或多次调用所述目标函数时采用的参数,从而获得所述第一调用参数集合;从所述每个第一调用参数集合中的每个参数的指针所指向的内存地址中获取所述参数数据。具体实现方式请参见图3所示实施例中步骤301、的详细描述,此处不再赘述。具体实现方式请参见图3所示实施例中步骤301的详细描述、图5所示实施例中步骤501的详细描述和图8所示实施例中步骤701的详细描述,此处不再赘述。
[0182]
可选地,作为一个实施例,所述参数数据为所述第一调用参数集合的参数的指针所指向的内存地址中满足预置条件的数据,所述预置条件包括以下中的至少一种:参数数据的数据类型为字符串类型、参数数据的数据长度大于或等于预置长度、所述测试文件的运行过程中首次出现的参数数据。具体实现方式请参见图3所示实施例中步骤301的详细描述、图5所示实施例中步骤501的详细描述和图8所示实施例中步骤701的详细描述,此处不再赘述。
[0183]
可选地,作为一个实施例,所述运行数据还包括映像内存数据,所述映像内存数据为第四内存空间在所述测试文件在运行结束后存储的数据,所述第四内存空间是操作系统
为初始映像数据分配的内存空间,所述初始映像数据为所述虚拟运行环境运行测试文件的初始化阶段从硬盘加载到内存中的数据。具体实现方式请参见图4所示实施例中步骤401的详细描述、图5所示实施例中步骤501的详细描述和图8所示实施例中步骤701的详细描述,此处不再赘述。
[0184]
可选地,作为一个实施例,当所述运行数据包括所述增量内存数据和所述映像内存数据时,所述至少一个重构文件包括第一重构文件,所述生成模块802,用于将所述增量内存数据和所述映像内存数据保存为所述第一重构文件;对应地,所述静态检测模块,用于对所述生成模块生成的所述第一重构文件进行静态检测,根据所述静态检测的结果判断所述测试文件是否为恶意文件。具体实现方式请参见图4所示实施例中步骤402的详细描述和图8所示实施例中步骤702的详细描述,此处不再赘述。
[0185]
可选地,作为一个实施例,当所述运行数据包括所述增量内存数据、所述参数数据和所述映像内存数据时,所述至少一个重构文件包括第二重构文件,所述生成模块,用于根据所述增量内存数据、所述参数数据和所述映像内存数据生成所述第二重构文件;对应地,所述静态检测模块,用于对所述生成模块生成的所述第二重构文件进行静态检测,根据所述静态检测的结果判断所述测试文件是否为恶意文件。具体实现方式请参见图5所示实施例中步骤502的详细描述和图8所示实施例中步骤702的详细描述,此处不再赘述。
[0186]
可选地,作为一个实施例,所述至少一个重构文件还包括第三重构文件,所述生成模块802,还用于将所述增量内存数据和所述映像内存数据保存为所述第三重构文件;对应地,所述静态检测模块,用于分别对所述生成模块生成的所述第二重构文件和所述第三重构文件进行静态检测,当所述第二重构文件和所述第三重构文件中的任意一个文件被检测为恶意文件时,确定所述测试文件为恶意文件。具体实现方式请参见图8所示实施例中步骤702的详细描述,此处不再赘述。
[0187]
可选地,作为一个实施例,所述生成模块802,用于根据所述映像内存数据生成重建文件;将目标内存数据和所述参数数据依次写入所述重建文件的尾部,以得到所述第二重构文件,其中,所述目标内存数据是根据所述增量内存数据确定的。具体实现方式请参见图6所示实施例中步骤5021-步骤5025的详细描述,此处不再赘述。
[0188]
可选地,作为一个实施例,所述生成模块802,还用于根据所述增量内存数据确定所述目标内存数据,其中,所述目标内存数据包含的内存数据的个数为第一取值,所述第一取值小于或等于所述增量内存数据包含的内存数据的个数,所述目标内存数据的数据大小为第二取值,所述第二取值小于或等于所述增量内存数据的数据大小。具体实现方式请参见图6所示实施例中步骤5025的详细描述,此处不再赘述。
[0189]
可选地,作为一个实施例,所述生成模块802,用于根据所述映像内存数据的文件头确定所述重建文件的文件头;将所述映像内存数据中的文件节表拷贝至所述重建文件的文件头的尾部以得到所述重建文件的文件节表;根据所述映像内存数据中的节数据,确定所述重建文件的节数据,所述重建文件的节数据位于所述重建文件的文件节表的尾部,其中,所述映像内存数据中的节数据包含所述映像内存数据中的文件节表所包含的一个或多个节表中每个节表对应的节数据,所述重建文件的节数据包含所述每个节表对应的节数据中的有效数据;根据所述重建文件的节数据中每个节数据的位置信息,对所述重建文件的文件节表或所述重建文件的文件头进行目标处理,以得到所述重建文件,所述目标处理包
括如下中的一种或多种:偏移修正、数据修正。具体实现方式请参见图6所示实施例中步骤5021-步骤5024的详细描述,此处不再赘述。
[0190]
可选地,作为一个实施例,所述重建文件的文件头与所述映像内存数据的文件头相同。具体实现方式请参见图6所示实施例中步骤5021的详细描述,此处不再赘述。
[0191]
可选地,作为一个实施例,所述生成模块802,用于确定所述重建文件的文件头为预置文件头;将所述映像内存数据中的文件节表拷贝至所述预置文件头的尾部以得到所述重建文件的文件节表;根据所述映像内存数据中的节数据,确定所述重建文件的节数据,所述重建文件的节数据位于所述重建文件的文件节表的尾部,其中,所述映像内存数据中的节数据包含所述映像内存数据中的文件节表所包含的一个或多个节表中每个节表对应的节数据,所述重建文件的节数据包含所述每个节表对应的节数据中的有效数据;根据所述重建文件的节数据中每个节数据的位置信息,对所述重建文件的文件节表或所述重建文件的文件头进行目标处理,以得到所述重建文件,所述目标处理包括如下中的一种或多种:偏移修正、数据修正。具体实现方式请参见图6所示实施例中步骤5021-步骤5025的详细描述,此处不再赘述。
[0192]
可选的,本技术实施例提供了一种芯片系统,该芯片系统包括处理器,用于支持检测设备实现上述恶意文件的检测方法。在一种可能的设计中,该芯片系统还包括存储器。该存储器,用于保存检测设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件,本技术实施例对此不作具体限定。
[0193]
应理解,本技术实施例中提及的处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0194]
还应理解,本技术实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0195]
需要说明的是,当处理器为通用处理器、dsp、asic、fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。
[0196]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟
以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0197]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0198]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0199]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0200]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0201]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0202]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
[0203]
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1