恶意程序的识别方法及装置、移动终端的制作方法_2

文档序号:8431084阅读:来源:国知局
[0067]进一步地,本发明的另一实施例中,包括上述步骤101-103的基础上,所述提取的静态特征包括第一静态特征,所述第一静态特征包括所述待检测程序依次调用的字符串的长度序列,所述步骤103包括:
[0068]将所述第一静态特征与所述恶意特征库中的恶意特征进行匹配,在匹配到与所述第一静态特征一致的恶意特征时,判断所述待检测程序为恶意程序。
[0069]进一步地,本发明的另一实施例中,包括上述步骤101-103的基础上,所述提取的静态特征包括第一静态特征,所述第一静态特征包括所述待检测程序依次调用的字符串的长度序列,所述提取的静态特征还包括第二静态特征,所述第二静态特征包括以下各项中的至少一种:所述待检测程序调用的系统函数的顺序序列;所述待检测程序调用的自定义函数的顺序序列;所述待检测程序调用的自定义函数的参数信息;所述待检测程序调用的自定义函数的返回值信息;其中,所述参数信息可以包括参数个数和参数类型;所述返回值信息可以包括所述返回值类型;
[0070]贝丨J,所述步骤103包括:
[0071]将所述第一静态特征与所述恶意特征库中的恶意特征进行匹配;
[0072]在匹配到与所述第一静态特征一致的恶意特征后,将所述第二静态特征与所述恶意特征库中的恶意特征进行匹配,若匹配到与所述第二静态特征一致的恶意特征,判断所述待检测程序为恶意程序。
[0073]通过第一静态特征和第二静态特征两类特征进行恶意程序判定,提高判定的准确率。
[0074]进一步地,本发明的另一实施例中,包括上述步骤101-103的基础上,所述步骤103之后还包括:
[0075]将所述判断的结果通知给用户,以告知用户所述待检测程序为恶意程序;
[0076]根据用户的指令清除所述恶意程序。
[0077]进一步地,本发明的另一实施例中,包括上述步骤101-103的基础上,所述步骤103之后还包括:
[0078]自动清除所述恶意程序。
[0079]本发明实施例还提供了一种恶意程序的识别装置,如图2所示,本实施例包括:
[0080]反编译模块22,用于对待检测程序进行反编译,得到所述待检测程序的反编译文件;具体的,在本发明的一个实施例中,待检测程序为安卓安装包(APK,Android Package),本步骤所得到的反编译文件为smali文件;
[0081]提取模块24,用于在所述反编译文件中提取所述待检测程序的静态特征;
[0082]处理模块26,用于将提取的静态特征与预设的恶意特征库中的恶意特征进行匹配,如果匹配到与所述静态特征一致的恶意特征,判断所述待检测程序为恶意程序。
[0083]本发明的恶意程序的识别装置,首先对待检测程序进行反编译,得到待检测程序的反编译文件,之后提取反编译文件的静态特征,将提取的静态特征与恶意特征库中的恶意特征进行匹配,如果匹配到与静态特征一致的恶意特征,则判断待检测程序为恶意程序。本发明的技术方案忽略掉恶意程序的代码含义,提取反编译文件中的静态特征作为判定特征,能够有效准确地检测出代码混淆过的恶意程序。
[0084]进一步地,本发明的一实施例中:
[0085]所述提取的静态特征包括第一静态特征,所述第一静态特征包括所述待检测程序依次调用的字符串的长度序列;
[0086]所述处理模块具体用于将所述第一静态特征与所述恶意特征库中的恶意特征进行匹配,在匹配到与所述第一静态特征一致的恶意特征时,判断所述待检测程序为恶意程序。
[0087]进一步地,本发明的一实施例中:
[0088]所述提取的静态特征包括第一静态特征,所述第一静态特征包括所述待检测程序依次调用的字符串的长度序列;为了减少恶意程序的误判率,所述提取的静态特征还包括第二静态特征,所述第二静态特征包括以下各项中的至少一种:
[0089]所述待检测程序调用的系统函数的顺序序列;
[0090]所述待检测程序调用的自定义函数的顺序序列;
[0091]所述待检测程序调用的自定义函数的参数信息;
[0092]所述待检测程序调用的自定义函数的返回值信息;
[0093]所述处理模块具体用于将所述第一静态特征与所述恶意特征库中的恶意特征进行匹配;在匹配到与所述第一静态特征一致的恶意特征后,将所述第二静态特征与所述恶意特征库中的恶意特征进行匹配,若匹配到与所述第二静态特征一致的恶意特征,判断所述待检测程序为恶意程序。
[0094]其中,所述参数信息可以包括参数个数和参数类型;
[0095]所述返回值信息可以包括所述返回值类型。
[0096]进一步地,本发明的另一实施例中,所述识别装置还包括:
[0097]通知模块,用于将所述判断的结果通知给用户,以告知用户所述待检测程序为恶意程序;
[0098]第一清除模块,用于根据用户的指令清除所述恶意程序;
[0099]进一步地,本发明的另一实施例中,所述装置还包括:
[0100]第二清除模块,用于自动清除所述恶意程序。
[0101]本发明实施例还提供了一种移动终端,包括如上所述的恶意程序的识别装置。
[0102]下面结合图3以及具体的实施例对本发明的恶意程序的识别方法及装置进行详细介绍:
[0103]目前对恶意程序的主要识别方法就是获取程序的明文代码,然后通过提取代码特征进而判断其是否具有恶意程序行为。但是恶意程序厂商往往通过代码混淆、栈名混淆、字符串加密等方式进行对抗,使得恶意程序的静态特征不固定,因此通过这种方法就不再能有效地识别出恶意程序。
[0104]但是无论采用了多么复杂的代码混淆技术,恶意程序本身为了实现某些特定的恶意功能,总是需要在代码中调用各类字符串、系统函数、自定义函数、以及传递自定义函数的各种参数。因此,本发明的技术方案可以忽略掉恶意程序的代码含义,提取反编译文件中恶意程序调用的字符串长度序列、系统函数序列、自定义函数序列以及自定义函数传递的参数以及返回值信息作为判定特征,对恶意程序进行恶意特征匹配,能够准确识别出恶意程序。具体地,本实施例的恶意程序的识别方法包括以下步骤:
[0105]步骤301:将待检测程序进行反编译,得到反编译文件,其中待检测程序在Android系统中一般为APK程序,得到的反编译文件为smali文件。
[0106]步骤302:在反编译文件中提取待检测程序依次调用的字符串的长度序列;
[0107]其中,记录待检测程序依次调用的每个字符串的长度,根据记录的字符串的长度形成长度序列。比如该待检测程序依次调用了字符串xyzw、abc、uy、134vm,每个字符串的长度分别为4、3、2、5,则按照调用顺序记录的字符串的长度序列为4325。
[0108]步骤303:将该长度序列与预设的恶意特征库中的恶意特征进行匹配,判断是否匹配到一致的恶意特征,如果匹配到一致的恶意特征,转向步骤304 ;如果没有匹配到一致的恶意特征,转向步骤311 ;
[0109]事先可以根据现有的海量数据和经验建立恶意特征库,在其中存放已经识别的恶意程序的恶意特征。将提取的长度序列与恶意特征库中的恶意特征进行匹配,如果匹配到一致的恶意特征,基本可以说明待检测程序为恶意程序,因此,在本发明的一个实施例中,可以直接转向步骤310,判定为恶意程序,但是为了减少恶意程序的误判率,还可以结合其他的特征进行进一步地确认。
[0110]步骤304:在反编译文件中提取待检测程序调用的系统函数的第一顺序序列;
[0111]记录待检测程序依次调用的系统函数的函数名,根据记录的系统函数的函数名形成第一顺序序列。比如该待检测程序依次调用了系统函数A、B、C、D,则该第一顺序序列中为待检测程序依次调用的系统函数名序列:ABCD。
[0112]步骤305:将该第一顺序序列与恶意特征库中的恶意特征进行匹配,判断是否匹配到一致的恶意特征,如果匹配到一致的恶意特征,转向步骤310,当然也可以转向步骤306进行进一步的判断;如果没有匹配到一致的恶意特征,转向步骤306进行进一步的判断;
[0113]步骤306:在反编译文件中提取待检测程序调用的自定义函数的第二顺序序列;
[0114]记录待检测程序依次调用的自定义函数的函数名,根据记录的自定义函数的函数名形成第二顺序序列。比如该待检测程序依次调用了自定义函数E、F、G、H,则该第二顺序序列中为待检测程序依次调用的自定义函数名序列:EFGH。
[0115]步骤307:将该第二顺序序列与恶意特征库中的恶意特征进行匹配,判断是否匹配到一致的恶意特征,如果匹配到一致的恶意特征,转向步骤310,当然也可以转向步骤308进行进一步的判断;如果没有匹配到一致的恶意特征,转向步骤308 ;
[0116]步骤308:在反编译文件中提取待检测程序调用的自定义函数的参数信息和返回值信息;
[0117]其中,该参数信息可以包括有待检测程序调用的自定义函数的参数个数和参数类型,该返回值信息可以包括有待检测程序调用的自定义函数的返回值类型。
[0118]步骤309:将该参数信息和返回值信息与恶意特征库中的恶意特征进行匹配,判断是否匹配到一致的恶意特征,如果匹配到一致的恶意特征
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1