CN106709342B - 恶意程序检测方法及装置 - Google Patents
恶意程序检测方法及装置 Download PDFInfo
- Publication number
- CN106709342B CN106709342B CN201610519496.2A CN201610519496A CN106709342B CN 106709342 B CN106709342 B CN 106709342B CN 201610519496 A CN201610519496 A CN 201610519496A CN 106709342 B CN106709342 B CN 106709342B
- Authority
- CN
- China
- Prior art keywords
- malicious act
- program
- call function
- parameter
- arm instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种恶意程序检测方法及装置,属于计算机技术领域。该方法包括:利用ARM指令翻译器执行程序中当前行的ARM指令;检测该ARM指令是否包括第一调用函数;在检测出该ARM指令包括第一调用函数时,从程序中获取第一调用函数调用的第一参数;检测第一调用函数和第一参数所指示的行为是否是恶意行为;在第一调用函数和第一参数所指示的行为是恶意行为时,确定程序为恶意程序,解决了终端在根据程序的标识检测程序是否为恶意程序时,需要随着恶意程序的增多来增加恶意程序的标识,导致恶意程序的标识占用终端的存储空间逐渐增大,终端需要匹配的标识逐渐增多的问题,达到了节省终端的存储空间,提高检测效率的效果。
Description
技术领域
本发明涉及计算机领域,特别涉及一种恶意程序检测方法及装置。
背景技术
恶意程序可以窃取或者破坏存储在终端中的数据,因此,为了提高数据的安全性,终端需要对恶意程序进行检测。
目前,对于包括进阶精简指令集(Advanced RISC Machines,ARM)指令的恶意程序,终端可以收集各个恶意程序的标识,并获取待检测程序的标识,检测该待检测程序的标识是否为恶意程序的标识,当待检测程序的标识是恶意程序的标识时,确定该待检测程序是恶意程序。其中,标识为特征码或者哈希值。
由于不同的恶意程序的标识不同,因此,随着恶意程序的增多,终端需要获取的标识的数量增多,占用的存储空间随之增大。
发明内容
为了解决恶意程序的标识数量增多,占用终端的存储空间增大的问题,本发明实施例提供了一种恶意程序检测方法及装置。所述技术方案如下:
第一方面,提供了一种恶意程序检测方法,该方法包括:
利用ARM指令翻译器执行程序中当前行的ARM指令;
检测该ARM指令是否包括第一调用函数;
在检测出该ARM指令包括第一调用函数时,从程序中获取第一调用函数调用的第一参数,第一调用函数用于供程序调用第一参数所指示的系统功能;
检测第一调用函数和第一参数所指示的行为是否是恶意行为;
在第一调用函数和第一参数所指示的行为是恶意行为时,确定程序为恶意程序。
第二方面,提供了一种恶意程序检测装置,该装置包括:
指令执行模块,用于利用ARM指令翻译器执行程序中当前行的ARM指令;
第一检测模块,用于检测指令执行模块执行的ARM指令是否包括第一调用函数;
第一获取模块,用于在第一检测模块检测出该ARM指令包括第一调用函数时,从程序中获取第一调用函数调用的第一参数,第一调用函数用于供程序调用第一参数所指示的系统功能;
第二检测模块,用于检测第一调用函数和第一获取模块获取的第一参数所指示的行为是否是恶意行为;
确定模块,用于在第二检测模块检测出第一调用函数和第一参数所指示的行为是恶意行为时,确定程序为恶意程序。
本发明实施例提供的技术方案带来的有益效果是:
通过在当前行的ARM指令包括第一调用函数时,从程序中获取第一调用函数调用的第一参数;在第一调用函数和第一参数所指示的行为是恶意行为时,确定程序为恶意程序,由于不同的恶意程序通常包括相同的恶意行为,因此,终端在根据程序的行为检测程序是否为恶意程序时,无需随着恶意程序的增多来增加恶意行为的数量,解决了终端在根据程序的标识检测程序是否为恶意程序时,需要随着恶意程序的增多来增加恶意程序的标识,导致恶意程序的标识占用终端的存储空间逐渐增大,终端需要匹配的标识逐渐增多的问题,达到了节省终端的存储空间,提高检测效率的效果。
另外,通过利用ARM指令翻译器执行程序中当前行的ARM指令,使得未安装ARM-CPU的终端也可运行包括ARM指令的程序,解决了只有安装有ARM-CPU的终端才能检测包括ARM指令的程序是否是恶意程序时,该恶意程序检测方法的使用范围受限的问题,达到了提高恶意程序检测方法的通用性的效果。
另外,ARM指令翻译器为ARM指令提供了模拟运行的环境,这样,ARM指令翻译器只是模拟执行ARM指令,而不是将ARM指令翻译给终端中的CPU来执行,解决了在ARM指令所指示的行为是恶意行为时,CPU执行该指令会导致数据泄露的问题,达到了提高数据的安全性的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一个示例性实施例示出的一种恶意程序检测方法流程图;
图2是根据一个示例性实施例示出的一种恶意程序检测方法流程图;
图3是根据一个示例性实施例示出的一种恶意程序检测装置的框图;
图4是根据一个示例性实施例示出的一种恶意程序检测装置的结构方框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。另外,下文中的“第一”和“第二”仅用于对名词进行描述,并不表示时间上的先后执行顺序。
请参考图1,其示出了本发明一个实施例提供的恶意程序检测方法的流程图,本实施例以该恶意程序检测方法应用于终端中来举例说明,该终端中安装的CPU(CentralProcessing Unit,中央处理器)的类型为任意类型的CPU。该方法可以包括但不限于以下步骤:
步骤101,利用ARM指令翻译器执行程序中当前行的ARM指令。
步骤102,检测该ARM指令是否包括第一调用函数。
步骤103,在检测出该ARM指令包括第一调用函数时,从程序中获取第一调用函数调用的第一参数,第一调用函数用于供程序调用第一参数所指示的系统功能。
步骤104,检测第一调用函数和第一参数所指示的行为是否是恶意行为。
步骤105,在第一调用函数和第一参数所指示的行为是恶意行为时,确定程序为恶意程序。
综上所述,本发明实施例提供的恶意程序检测方法,通过在当前行的ARM指令包括第一调用函数时,从程序中获取第一调用函数调用的第一参数;在第一调用函数和第一参数所指示的行为是恶意行为时,确定程序为恶意程序,由于不同的恶意程序通常包括相同的恶意行为,因此,终端在根据程序的行为检测程序是否为恶意程序时,无需随着恶意程序的增多来增加恶意行为的数量,解决了终端在根据程序的标识检测程序是否为恶意程序时,需要随着恶意程序的增多来增加恶意程序的标识,导致恶意程序的标识占用终端的存储空间逐渐增大,终端需要匹配的标识逐渐增多的问题,达到了节省终端的存储空间,提高检测效率的效果。
另外,通过利用ARM指令翻译器执行程序中当前行的ARM指令,使得未安装ARM-CPU的终端也可运行包括ARM指令的程序,解决了只有安装有ARM-CPU的终端才能检测包括ARM指令的程序是否是恶意程序时,该恶意程序检测方法的使用范围受限的问题,达到了提高恶意程序检测方法的通用性的效果。
另外,ARM指令翻译器为ARM指令提供了模拟运行的环境,这样,ARM指令翻译器只是模拟执行ARM指令,而不是将ARM指令翻译给终端中的CPU来执行,解决了在ARM指令所指示的行为是恶意行为时,CPU执行该指令会导致数据泄露的问题,达到了提高数据的安全性的效果。
请参考图2,其示出了本发明一个实施例提供的恶意程序检测方法的流程图,本实施例以该恶意程序检测方法应用于终端中来举例说明,该终端中安装的CPU的类型为任意类型的CPU,该方法可以包括但不限于以下步骤:
步骤201,获取每个恶意程序包括的至少一个第二调用函数和每个第二调用函数调用的第二参数。
第二调用函数用于供恶意程序调用第二参数所指示的系统功能。
终端获取一段程序,利用指令翻译工具将该程序翻译成ARM指令,开发者对该ARM指令进行分析可以判断出该程序是否为恶意程序,并触发终端对判断出的恶意程序包括的恶意行为进行提取,恶意行为是指恶意程序调用的系统功能。其中,指令翻译工具可以为交互式反汇编器(Interactive Disassembler,IDA),也可以是其他用于将程序包括的数据翻译成ARM指令的反汇编工具,本实施例不作限定。
在获取每个恶意程序的恶意行为时,由于恶意行为是恶意程序通过第二调用函数来调用第二参数实现的,因此,终端可以获取每个恶意程序中的至少一个第二调用函数和每个第二调用函数调用的第二参数。其中,终端在获取每个恶意程序包括的至少一个第二调用函数和每个第二调用函数调用的第二参数时,可以是从恶意程序对应的ARM指令中,人工提取至少一个第二调用函数和每个第二调用函数调用的第二参数;也可以是终端利用调试工具从该ARM指令中提取至少一个第二调用函数和每个第二调用函数调用的第二参数,本实施例不作限定。
比如:终端利用IDA反汇编器将下表一中的恶意程序翻译成下表一中的ARM指令,开发者提取该恶意程序对应的ARM指令中的第二调用函数为fopen,fopen调用的第二参数为寄存在R0中的proc/kallsyms和寄存在R1中的r。
表一:
步骤202,根据每个第二调用函数和第二调用函数调用的第二参数生成恶意行为。
在一种实现方式中,终端根据每个第二调用函数和第二调用函数调用的第二参数生成恶意行为包括:对于每个第二调用函数,终端直接根据该第二调用函数和该第二调用函数调用的第二参数生成一种恶意行为。在这种实现方式中,由于其他开发者都可以获知恶意行为包括的第二调用参数和第二参数,因此,恶意行为的数据安全性不高。
在另一种实现方式中,终端根据每个第二调用函数和第二调用函数调用的第二参数生成恶意行为包括:终端根据预设的对应关系查找第二调用函数对应的第二标识;获取该第二参数的第二特征标识,根据第二标识和第二特征标识生成一种恶意行为。其中,对应关系用于记录各个第二调用函数与各个第二标识之间的关系,第二标识可以为第二调用函数的特征码或者哈希值,也可以为预设的字符串,本实施例不作限定。第二特征标识可以为第二参数的特征码或者哈希值,本实施例不作限定。
在这种实现方式中,其他开发者无法获知终端中预设的对应关系,就无法获知第二标识的含义;也无法获知终端生成第二特征标识的方式,就无法根据第二特征标识破解出第二参数,这样,其他开发者无法根据恶意行为包括的第二标识和第二特征标识获知该恶意行为包括的第二调用参数和第二参数,提高了恶意行为的数据安全性。
比如:对应关系如下表二所示,恶意程序包括的ARM指令如表一所示,人工提取ARM指令中的第二调用函数fopen,终端根据表二所示的对应关系可以确定出fopen的第二标识为01。终端获取fopen调用的两个参数“proc/kallsyms”和“r”,根据这两个参数生成第二特征标识xxaa。终端根据01和xxaa生成一种恶意行为。
表二:
第二调用函数 | 第二标识 |
fopen | 01 |
creat | 10 |
read | 00 |
write | 01 |
步骤203,对于每种恶意行为,检测恶意行为的数量是否超过预设阈值,当恶意行为的数量超过预设阈值时,将恶意行为添加到恶意行为库中。
其中,恶意行为库用于存储终端选择的至少一个恶意行为。
终端生成恶意行为后,可以将生成的所有恶意行为都添加到恶意行为库中。此时,假设对于某个恶意行为来说,只有一个恶意程序包括该恶意行为,那么终端将该恶意行为存储在恶意行为库中既无法检测出其他恶意程序。
在本实施例中,终端在将恶意程序添加到恶意行为库中之前,还检测该恶意行为的数量是否超过预设阈值,当该恶意行为的数量超过预设阈值时,将该恶意行为添加到恶意行为库中。这样,可以保证恶意行为库中的恶意行为是恶意程序通用的恶意行为,终端可以根据恶意行为库中的恶意行为检测出多个恶意程序。
比如:终端将数量超过预设阈值的恶意行为添加到恶意行为库中,得到的恶意行为库如下表三所示。
表三:
01abcd |
00abcd |
00aeeef |
01xxaa |
11xxxxdddd |
步骤204,利用ARM指令翻译器将程序中当前行的数据翻译成ARM指令。
终端利用ARM指令翻译器将程序中当前行的数据翻译成ARM指令。在翻译成功时,执行步骤205;在翻译失败时,流程结束。可选的,在翻译失败时,指令翻译器将翻译失败的结果发送给终端,使得终端利用该指令翻译器重新对该程序进行翻译。其中,ARM指令翻译器用于逐行将由数据构成的程序翻译成ARM指令,并运行当前翻译的一行ARM指令,具有该功能的硬件、软件或者硬件软件的结合都可以成为ARM指令翻译器,本实施例不对该ARM指令翻译器的名称作限定。
比如:程序如下表四所示,且当前行为第三行,终端利用ARM指令翻译器将第三行的十六进制数据翻译成ARM指令。
表四:
步骤205,在成功将数据翻译成ARM指令时,利用ARM指令翻译器执行程序中当前行的ARM指令。
比如:终端利用ARM指令翻译器将表四中第三行的程序翻译成BLXfopen成功后,利用该ARM指令翻译器执行BLX fopen。
ARM指令翻译器为ARM指令提供了模拟运行的环境,这样,ARM指令翻译器只是模拟执行ARM指令,而不是将ARM指令翻译给终端中的CPU来执行,解决了在ARM指令所指示的行为是恶意行为时,CPU执行该指令会导致数据泄露的问题,提高了数据的安全性。
步骤206,检测该ARM指令是否包括第一调用函数。
在终端检测出该ARM指令包括第一调用函数时,执行步骤207;在终端检测出该ARM指令不包括第一调用函数时,将下一行数据翻译成ARM指令,也即,执行步骤204。
步骤207,在检测出ARM指令包括第一调用函数时,从程序中获取第一调用函数调用的第一参数。
第一调用函数用于供程序调用第一参数所指示的系统功能。
比如:程序包括的ARM指令如表四所示,且当前行的ARM指令为BLXfopen,终端检测出fopen是第一调用函数,获取fopen调用的寄存在R0中的参数proc/kallsyms和寄存在R1中的参数r。
步骤208,检测第一调用函数和第一参数所指示的行为是否是恶意行为。
在检测出第一调用函数和第一参数所指示的行为是恶意行为时,执行步骤209;在检测出第一调用函数和第一参数所指示的行为不是恶意行为时,流程结束。
其中,终端检测第一调用函数和第一参数所指示的行为是否是恶意行为,包括:根据对应关系确定第一调用函数对应的第一标识,对应关系用于记录各个第一调用函数与各个第一标识之间的关系;获取第一参数的第一特征标识,第一特征标识是根据第一参数生成的特征码或者哈希值;检测恶意行为库中是否存在与第一标识和第一特征标识相匹配的恶意行为;在恶意行为库中存在与第一标识和第一特征标识相匹配的恶意行为时,确定第一调用函数和第一参数所指示的行为是恶意行为。其中,对应关系与第二调用函数与各个第二标识之间的关系相同,第一特征标识的生成方式与第二特征标识的生成方式相同。
与第一标识和第一特征标识相匹配的恶意行为是指:恶意行为中的第二标识与第一标识相同,且恶意行为中的第二特征标识与第一特征标识相同。
比如:终端确定出程序的当前行的第一调用函数为fopen,且fopen调用的两个参数为“proc/kallsyms”和“r”。根据表二所示的对应关系可知,fopen对应的第一标识为01,“proc/kallsyms”和“r”生成的第二特征标识为xxaa。终端在表三所示的恶意行为库中检测出存在与01和xxaa相匹配的恶意行为,则该程序为恶意程序。
通过对比表一和表四可知,表一所示的恶意程序1和表四所示的程序2是两段不同的数据,则终端根据这两段数据生成的标识也不同。若终端通过检测程序2的标识与恶意程序1的标识是否相匹配来检测程序2是否为恶意程序,则得到的结果是程序1不是恶意程序。若程序1实际上是恶意程序,则终端需要将程序1的标识添加到恶意程序标识库中,当终端再次检测与程序1相同的程序时,才会确定出该程序1为恶意程序。而在本实施例中,由于程序1包括恶意程序2的恶意行为,检测的结果是程序1是恶意程序,不需要终端添加程序1的标识,即可检测出程序1是恶意程序,提高了终端检测程序是否为恶意程序的效率,节省了终端的存储空间。
需要说明的是,步骤201至203只需要在步骤208之前执行,本实施例不限定步骤201-203和步骤204-207的先后执行顺序。
步骤209,在第一调用函数和第一参数所指示的行为是恶意行为时,确定程序为恶意程序。
由于该程序与恶意程序有相似的行为,因此,将该程序确定为恶意程序。
可选的,为了避免在一些非恶意程序包括恶意行为库中的恶意行为时,终端将这些非恶意程序误判为恶意程序,可以在终端中预设一个白名单库,该白名单库中存在至少一个非恶意程序的标识。终端在检测程序是否包括恶意行为之前,将该程序的标识与白名单库中的标识进行匹配,若在白名单库中查找到与该程序的标识相匹配的标识,则将该程序确定为非恶意程序,以节省检测该程序包括的恶意行为所消耗的资源;若在白名单库中未查找到与该程序的标识相匹配的标识,再检测该程序是否包括恶意行为,在该程序包括恶意行为时将该程序确定为恶意程序,从而提高终端确定恶意程序的准确性。
综上所述,本发明实施例提供的恶意程序检测方法,通过在当前行的ARM指令包括第一调用函数时,从程序中获取第一调用函数调用的第一参数;在第一调用函数和第一参数所指示的行为是恶意行为时,确定程序为恶意程序,由于不同的恶意程序通常包括相同的恶意行为,因此,终端在根据程序的行为检测程序是否为恶意程序时,无需随着恶意程序的增多来增加恶意行为的数量,解决了终端在根据程序的标识检测程序是否为恶意程序时,需要随着恶意程序的增多来增加恶意程序的标识,导致恶意程序的标识占用终端的存储空间逐渐增大,终端需要匹配的标识逐渐增多的问题,达到了节省终端的存储空间,提高检测效率的效果。
另外,通过根据每个第二调用函数对应的第二标识,以及,该第二调用函数调用的第二参数的第二特征标识作为一个恶意行为,使得其他开发者无法获知恶意行为库中每个数据的含义,从而无法破解出恶意行为库中包括的恶意行为,提高了恶意行为库的数据安全性。
另外,通过将数量超过预设阈值的恶意行为添加到恶意行为库中,使得恶意行为库中的恶意行为是多个恶意程序通用的恶意行为,解决了在恶意行为库中的某个恶意行为只是一个恶意程序包括的恶意行为时,终端不能根据该恶意行为检测出其他程序是恶意程序,占用了恶意行为库的存储空间的问题,节省了恶意行为库的存储空间。
另外,通过利用ARM指令翻译器执行程序中当前行的ARM指令,使得未安装ARM-CPU的终端也可运行包括ARM指令的程序,解决了只有安装有ARM-CPU的终端才能检测包括ARM指令的程序是否是恶意程序时,该恶意程序检测方法的使用范围受限的问题,达到了提高恶意程序检测方法的通用性的效果。
另外,ARM指令翻译器为ARM指令提供了模拟运行的环境,这样,ARM指令翻译器只是模拟执行ARM指令,而不是将ARM指令翻译给终端中的CPU来执行,解决了在ARM指令所指示的行为是恶意行为时,CPU执行该指令会导致数据泄露的问题,达到了提高数据的安全性的效果。
请参考图3,其示出了本发明一个实施例提供的恶意程序检测装置的框图,本实施例以该恶意程序检测装置应用于终端中来举例说明,该终端中安装的CPU的类型为任意类型的CPU,该装置可以包括但不限于以下模块:指令执行模块310、第一检测模块320、第一获取模块330、第二检测模块340、确定模块350。
指令执行模块310,用于利用ARM指令翻译器执行程序中当前行的ARM指令;
该第一检测模块320,用于检测指令执行模块310执行的ARM指令是否包括第一调用函数;
该第一获取模块330,用于在第一检测模块320检测出ARM指令包括第一调用函数时,从程序中获取第一调用函数调用的第一参数,第一调用函数用于供程序调用第一参数所指示的系统功能;
该第二检测模块340,用于检测第一调用函数和第一获取模块330获取的第一参数所指示的行为是否是恶意行为;
该确定模块350,用于在第二检测模块340检测出第一调用函数和第一参数所指示的行为是恶意行为时,确定程序为恶意程序。
综上所述,通过在当前行的ARM指令包括第一调用函数时,从程序中获取第一调用函数调用的第一参数;在第一调用函数和第一参数所指示的行为是恶意行为时,确定程序为恶意程序,由于不同的恶意程序通常包括相同的恶意行为,因此,终端在根据程序的行为检测程序是否为恶意程序时,无需随着恶意程序的增多来增加恶意行为的数量,解决了终端在根据程序的标识检测程序是否为恶意程序时,需要随着恶意程序的增多来增加恶意程序的标识,导致恶意程序的标识占用终端的存储空间逐渐增大,终端需要匹配的标识逐渐增多的问题,达到了节省终端的存储空间,提高检测效率的效果。
另外,通过利用ARM指令翻译器执行程序中当前行的ARM指令,使得未安装ARM-CPU的终端也可运行包括ARM指令的程序,解决了只有安装有ARM-CPU的终端才能检测包括ARM指令的程序是否是恶意程序时,该恶意程序检测方法的使用范围受限的问题,达到了提高恶意程序检测方法的通用性的效果。
另外,ARM指令翻译器为ARM指令提供了模拟运行的环境,这样,ARM指令翻译器只是模拟执行ARM指令,而不是将ARM指令翻译给终端中的CPU来执行,解决了在ARM指令所指示的行为是恶意行为时,CPU执行该指令会导致数据泄露的问题,达到了提高数据的安全性的效果。
基于图3所示的实施例,本实施例还提供了一种恶意程序检测装置。
可选的,第二检测模块,包括:
第一确定单元,用于根据预设的对应关系确定第一调用函数对应的第一标识,对应关系用于记录各个第一调用函数与各个第一标识之间的关系;
获取单元,用于获取第一参数的第一特征标识,第一特征标识是根据第一参数生成的特征码或者哈希值;
检测单元,用于检测恶意行为库中是否存在与第一确定单元确定的第一标识和第一获取单元获取的第一特征标识相匹配的恶意行为,恶意行为包括第二标识和第二特征标识,且第二标识与第一标识相同,第二特征标识与第一特征标识相同,第二标识是恶意程序包括的第二调用函数的标识,第二特征标识是第二调用函数调用的第二参数的标识,第二调用函数用于供恶意程序调用第二参数所指示的系统功能;
第二确定单元,用于在检测单元检测出恶意行为库中存在与第一标识和第一特征标识相匹配的恶意行为时,确定第一调用函数和第一参数所指示的行为是恶意行为。
可选的,该装置还包括:
第二获取模块,用于在检测第一调用函数和第一参数所指示的行为是否是恶意行为之前,获取每个恶意程序包括的至少一个第二调用函数和每个第二调用函数调用的第二参数;
生成模块,用于根据第二获取模块获取的每个第二调用函数和第二调用函数调用的第二参数生成恶意行为;
添加模块,用于对于每种恶意行为,检测生成模块生成的恶意行为的数量是否超过预设阈值,当恶意行为的数量超过预设阈值时,将恶意行为添加到恶意行为库中。
可选的,该装置还包括:
翻译模块,用于在利用ARM指令翻译器执行程序中当前行的ARM指令之前,将程序中当前行的数据翻译成ARM指令;
触发执行模块,用于在翻译模块成功将数据翻译成ARM指令时,模拟执行ARM指令,触发指令执行模块执行利用ARM指令翻译器执行程序中当前行的ARM指令的步骤。
综上所述,通过根据每个第二调用函数对应的第二标识,以及,该第二调用函数调用的第二参数的第二特征标识作为一个恶意行为,使得其他开发者无法获知恶意行为库中每个数据的含义,从而无法破解出恶意行为库中包括的恶意行为,提高了恶意行为库的数据安全性。
另外,通过将数量超过预设阈值的恶意行为添加到恶意行为库中,使得恶意行为库中的恶意行为是多个恶意程序通用的恶意行为,解决了在恶意行为库中的某个恶意行为只是一个恶意程序包括的恶意行为时,终端不能根据该恶意行为检测出其他程序是恶意程序,占用了恶意行为库的存储空间的问题,节省了恶意行为库的存储空间。
请参见图4所示,其示出了本发明部分实施例中提供的终端的结构方框图。该终端400用于实施上述实施例提供的恶意程序检测方法。本发明中的终端400可以包括一个或多个如下组成部分:用于执行计算机程序指令以完成各种流程和方法的处理器,用于信息和存储程序指令随机接入存储器(RAM)和只读存储器(ROM),用于存储数据和信息的存储器,I/O设备,界面,天线等。具体来讲:
终端400可以包括RF(Radio Frequency,射频)电路410、存储器420、输入单元430、显示单元440、传感器450、音频电路460、WiFi(wireless fidelity,无线保真)模块470、处理器480、电源482、摄像头490等部件。本领域技术人员可以理解,图4中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图4对终端400的各个构成部件进行具体的介绍:
RF电路410可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器480处理;另外,将设计上行的数据发送给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF电路410还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobilecommunication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband CodeDivision Multiple Access,宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。
存储器420可用于存储软件程序以及模块,处理器480通过运行存储在存储器420的软件程序以及模块,从而执行终端400的各种功能应用以及数据处理。存储器420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端400的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元430可用于接收输入的数字或字符信息,以及产生与终端400的用户设置以及功能控制有关的键信号输入。具体地,输入单元430可包括触控面板431以及其他输入设备432。触控面板431,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板431上或在触控面板431附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板431可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器480,并能接收处理器480发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板431。除了触控面板431,输入单元430还可以包括其他输入设备432。具体地,其他输入设备432可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元440可用于显示由用户输入的信息或提供给用户的信息以及终端400的各种菜单。显示单元440可包括显示面板441,可选的,可以采用LCD(Liquid CrystalDisplay,液晶显示器)、OLED(Organic Light-Emitting Diode,有机发光二极管)等形式来配置显示面板441。进一步的,触控面板431可覆盖显示面板441,当触控面板431检测到在其上或附近的触摸操作后,传送给处理器480以确定触摸事件的类型,随后处理器480根据触摸事件的类型在显示面板441上提供相应的视觉输出。虽然在图4中,触控面板431与显示面板441是作为两个独立的部件来实现终端400的输入和输入功能,但是在某些实施例中,可以将触控面板431与显示面板441集成而实现终端400的输入和输出功能。
终端400还可包括至少一种传感器450,比如陀螺仪传感器、磁感应传感器、光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板441的亮度,接近传感器可在终端400移动到耳边时,关闭显示面板441和/或背光。作为运动传感器的一种,加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端400还可配置的气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路460、扬声器461,传声器462可提供用户与终端400之间的音频接口。音频电路460可将接收到的音频数据转换后的电信号,传输到扬声器461,由扬声器461转换为声音信号输出;另一方面,传声器462将收集的声音信号转换为电信号,由音频电路460接收后转换为音频数据,再将音频数据输出处理器480处理后,经RF电路410以发送给比如另一终端,或者将音频数据输出至存储器420以便进一步处理。
WiFi属于短距离无线传输技术,终端400通过WiFi模块470可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图4示出了WiFi模块470,但是可以理解的是,其并不属于终端400的必须构成,完全可以根据需要在不改变公开的本质的范围内而省略。
处理器480是终端400的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器420内的软件程序和/或模块,以及调用存储在存储器420内的数据,执行终端400的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器480可包括一个或多个处理单元;优选的,处理器480可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器480中。
终端400还包括给各个部件供电的电源482(比如电池),优选的,电源可以通过电源管理系统与处理器482逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
摄像头490一般由镜头、图像传感器、接口、数字信号处理器、CPU、显示屏幕等组成。其中,镜头固定在图像传感器的上方,可以通过手动调节镜头来改变聚焦;图像传感器相当于传统相机的“胶卷”,是摄像头采集图像的心脏;接口用于把摄像头利用排线、板对板连接器、弹簧式连接方式与终端主板连接,将采集的图像发送给所述存储器420;数字信号处理器通过数学运算对采集的图像进行处理,将采集的模拟图像转换为数字图像并通过接口发送给存储器420。
尽管未示出,终端400还可以包括蓝牙模块等,在此不再赘述。
需要说明的是:上述实施例提供的恶意程序检测的装置在检测恶意程序时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的恶意程序检测的装置与恶意程序检测的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种恶意程序检测方法,其特征在于,所述方法包括:
利用进阶精简指令集机器ARM指令翻译器执行程序中当前行的ARM指令;
检测所述ARM指令是否包括第一调用函数;
在检测出所述ARM指令包括所述第一调用函数时,从所述程序中获取所述第一调用函数调用的第一参数,所述第一调用函数用于供所述程序调用所述第一参数所指示的系统功能;
检测所述第一调用函数和所述第一参数所指示的行为是否是恶意行为,包括:根据预设的对应关系确定所述第一调用函数对应的第一标识,所述对应关系用于记录各个第一调用函数与各个第一标识之间的关系;
获取所述第一参数的第一特征标识,检测恶意行为库中是否存在与所述第一标识和所述第一特征标识相匹配的恶意行为,所述恶意行为包括第二标识和第二特征标识,所述第二标识是恶意程序包括的第二调用函数的标识,所述第二特征标识是所述第二调用函数调用的第二参数的标识,所述第二调用函数用于供所述恶意程序调用所述第二参数所指示的系统功能;
其中,与所述第一标识和所述第一特征标识相匹配的恶意行为是指:所述恶意行为中的所述第二标识与所述第一标识相同,且所述恶意行为中的所述第二特征标识与所述第一特征标识相同;
在所述恶意行为库中存在与所述第一标识和所述第一特征标识相匹配的恶意行为时,确定所述第一调用函数和所述第一参数所指示的行为是所述恶意行为;
在所述第一调用函数和所述第一参数所指示的行为是所述恶意行为时,确定所述程序为恶意程序。
2.根据权利要求1所述的方法,其特征在于,
所述第一特征标识是根据所述第一参数生成的特征码。
3.根据权利要求1所述的方法,其特征在于,在所述检测所述第一调用函数和所述第一参数所指示的行为是否是恶意行为之前,包括:
获取每个恶意程序包括的至少一个第二调用函数和每个第二调用函数调用的第二参数;
根据每个第二调用函数和所述第二调用函数调用的第二参数生成恶意行为;
对于每种恶意行为,检测所述恶意行为的数量是否超过预设阈值,当所述恶意行为的数量超过所述预设阈值时,将所述恶意行为添加到所述恶意行为库中。
4.根据权利要求1至3任一所述的方法,其特征在于,在所述利用ARM指令翻译器执行程序中当前行的ARM指令之前,包括:
利用所述ARM指令翻译器将所述程序中当前行的数据翻译成ARM指令;
在成功将所述数据翻译成ARM指令时,触发执行所述利用ARM指令翻译器执行程序中当前行的ARM指令的步骤。
5.一种恶意程序检测装置,其特征在于,所述装置包括:
指令执行模块,用于利用进阶精简指令集机器ARM指令翻译器执行程序中当前行的ARM指令;
第一检测模块,用于检测所述指令执行模块执行的所述ARM指令是否包括第一调用函数;
第一获取模块,用于在所述第一检测模块检测出所述ARM指令包括所述第一调用函数时,从所述程序中获取所述第一调用函数调用的第一参数,所述第一调用函数用于供所述程序调用所述第一参数所指示的系统功能;
第一确定单元,用于根据预设的对应关系确定所述第一调用函数对应的第一标识,所述对应关系用于记录各个第一调用函数与各个第一标识之间的关系;
获取单元,用于获取所述第一参数的第一特征标识;
检测单元,用于检测恶意行为库中是否存在与所述第一确定单元确定的所述第一标识和所述第一获取单元获取的所述第一特征标识相匹配的恶意行为;所述恶意行为包括第二标识和第二特征标识,所述第二标识是恶意程序包括的第二调用函数的标识,所述第二特征标识是所述第二调用函数调用的第二参数的标识,所述第二调用函数用于供所述恶意程序调用所述第二参数所指示的系统功能;
其中,与所述第一标识和所述第一特征标识相匹配的恶意行为是指:所述恶意行为中的所述第二标识与所述第一标识相同,且所述恶意行为中的所述第二特征标识与所述第一特征标识相同;
第二确定单元,用于在所述检测单元检测出所述恶意行为库中存在与所述第一标识和所述第一特征标识相匹配的恶意行为时,确定所述第一调用函数和所述第一参数所指示的行为是所述恶意行为;
确定模块,用于在检测出所述第一调用函数和所述第一参数所指示的行为是所述恶意行为时,确定所述程序为恶意程序。
6.根据权利要求5所述的装置,其特征在于,所述第一特征标识是根据所述第一参数生成的特征码。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于在所述检测所述第一调用函数和所述第一参数所指示的行为是否是恶意行为之前,获取每个恶意程序包括的至少一个第二调用函数和每个第二调用函数调用的第二参数;
生成模块,用于根据所述第二获取模块获取的每个第二调用函数和所述第二调用函数调用的第二参数生成恶意行为;
添加模块,用于对于每种恶意行为,检测所述生成模块生成的所述恶意行为的数量是否超过预设阈值,当所述恶意行为的数量超过所述预设阈值时,将所述恶意行为添加到所述恶意行为库中。
8.根据权利要求5至7任一所述的装置,其特征在于,所述装置还包括:
翻译模块,用于在所述利用ARM指令翻译器执行程序中当前行的ARM指令之前,利用所述ARM指令翻译器将所述程序中当前行的数据翻译成ARM指令;
触发执行模块,用于在所述翻译模块成功将所述数据翻译成ARM指令时,触发所述指令执行模块执行所述利用ARM指令翻译器执行程序中当前行的ARM指令的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610519496.2A CN106709342B (zh) | 2016-07-01 | 2016-07-01 | 恶意程序检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610519496.2A CN106709342B (zh) | 2016-07-01 | 2016-07-01 | 恶意程序检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106709342A CN106709342A (zh) | 2017-05-24 |
CN106709342B true CN106709342B (zh) | 2018-11-09 |
Family
ID=58939719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610519496.2A Active CN106709342B (zh) | 2016-07-01 | 2016-07-01 | 恶意程序检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106709342B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729236A (zh) * | 2017-09-30 | 2018-02-23 | 努比亚技术有限公司 | 应用程序的管理方法、装置、移动终端及存储介质 |
CN110447215B (zh) * | 2017-11-10 | 2021-02-12 | 华为技术有限公司 | 应用软件恶意行为的动态告警方法和终端 |
CN110222506A (zh) * | 2019-06-11 | 2019-09-10 | 腾讯科技(深圳)有限公司 | 快应用检测方法、装置、设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609462A (zh) * | 2012-01-14 | 2012-07-25 | 杭州安恒信息技术有限公司 | 一种通过提取sql模板对海量sql压缩存储的方法 |
CN103761479A (zh) * | 2014-01-09 | 2014-04-30 | 北京奇虎科技有限公司 | 恶意程序的扫描方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9202047B2 (en) * | 2012-05-14 | 2015-12-01 | Qualcomm Incorporated | System, apparatus, and method for adaptive observation of mobile device behavior |
-
2016
- 2016-07-01 CN CN201610519496.2A patent/CN106709342B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609462A (zh) * | 2012-01-14 | 2012-07-25 | 杭州安恒信息技术有限公司 | 一种通过提取sql模板对海量sql压缩存储的方法 |
CN103761479A (zh) * | 2014-01-09 | 2014-04-30 | 北京奇虎科技有限公司 | 恶意程序的扫描方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106709342A (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103634294B (zh) | 信息验证方法和装置 | |
CN104468464B (zh) | 验证方法、装置和系统 | |
CN103632165B (zh) | 一种图像处理的方法、装置及终端设备 | |
CN103634109B (zh) | 操作权限验证方法和装置 | |
CN106502906B (zh) | 一种测试应用程序的方法和装置 | |
CN104852885B (zh) | 一种进行验证码验证的方法、装置和系统 | |
US20190349202A1 (en) | Protection method and protection system of system partition key data and terminal | |
CN103701926A (zh) | 一种获取故障原因信息的方法、装置和系统 | |
CN104424431B (zh) | 一种重置虚拟机用户登陆密码的方法及装置 | |
CN104298666B (zh) | 网页分享方法和装置 | |
CN104965722B (zh) | 一种显示信息的方法及装置 | |
CN107622200A (zh) | 应用程序的安全性检测方法及装置 | |
CN105389259B (zh) | 一种进行应用程序测试的方法、装置及系统 | |
CN104573437B (zh) | 信息认证方法、装置和终端 | |
WO2018161540A1 (zh) | 指纹注册方法及相关产品 | |
CN105847325A (zh) | 应用客户端的调试方法及装置 | |
CN107493378A (zh) | 应用程序登录的方法和装置、计算机设备及可读存储介质 | |
CN106973168A (zh) | 语音播放方法、装置及计算机设备 | |
CN108073495A (zh) | 应用程序崩溃原因的定位方法及装置 | |
CN107219951A (zh) | 触控屏控制方法、装置、存储介质及终端设备 | |
CN106709342B (zh) | 恶意程序检测方法及装置 | |
CN104217172A (zh) | 隐私内容查看方法及装置 | |
CN109687974A (zh) | Apk验证方法、装置、移动终端及可读存储介质 | |
CN108090345A (zh) | linux系统外部命令执行方法及装置 | |
CN105807908B (zh) | 一种切换工作模式的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |