一种可执行文件处理方法和装置制造方法及图纸

技术编号:8161413 阅读:188 留言:0更新日期:2013-01-07 19:28
本发明专利技术公开了一种可执行文件处理方法和装置,所述方法包括:基于可执行文件入口点文件偏移,查找文件入口点,并创建指令流栈;以预先设定的分析步数X为基准,依次对所述入口点后的各指令进行分析,获取可执行文件入口点后X条指令的操作码opcode,得到opcode组;以所述opcode组为分类条件,对各所述可执行文件进行分类处理。所述装置包括:入口点查找模块、指令分析模块和分类处理模块。本发明专利技术所述方法和装置,采用可执行文件内部特征的分类技术,具有强抗干扰性,且不会出现文件无法分类的情况。另外,所述分类技术还具有分类速度快、分类效果好等优点,可以实现对海量可执行文件的分类。

【技术实现步骤摘要】

本专利技术涉及互联网
,尤其涉及一种可执行文件处理方法和装置
技术介绍
随着互联网的发展,互联网用户的极具增加,互联网安全的形势也越来越严峻。互联网安全的主要威胁之一来自木马病毒地传播。木马病毒主要以可执行文件为载体,所以对于海量可执行文件的分类对于木马病毒的识别非常有意义。对于海量的可执行文件,由其对于病毒分析员来说,需要有效的方法对其进行分类,分析一个可执行文件可以代表同一类的文件,如此才能够完成对海量可执行文件的分析工作。 目前对可执行文件分类的方法包括一,可执行文件外部特征分类技术;此技术可以看作是一类方法的综合应用。对于可执行文件有许多外部特征,比如可执行文件的大小,可执行文件的图标等。文件大小与图标也是目前最为常见的分类方法。其中,按照可执行文件大小分类时,文件大小相差不超过512个字节,都可以分为同一个类型;按照可执行文件图标分类时,拥有相同图标的可执行文件可以分为同一类。上述可执行文件外部特征分类技术虽然简单易行,但缺点也显而易见,主要表现为外部特征有限,并且容易变化。对于可执行文件大小,只需要增加附加数据,就可以任意修改文件大小,而并不影响可执行文件功能。对于文件图标,并不是所有的可执行文件都拥有图标,比如动态链接库就不需要图标,而目前许多木马病毒都是以动态链接库的面貌出现,所以对于这部分文件无法使用此方法。二、二进制分类技术;所述二进制分类技术是通过识别可执行文件的二进制特征对文件进行分类的。例如著名的编译器识别工具PEID就是使用二进制特征对文件进行编译器归类。通过比对可执行文件入口点的二进制串,以及由此二进制串中提供的可执行文件中另外一处特征点,进行编译器归类。PEID针对二进制特征也作了优化,比如特征取到代码段,这样无法随意修改二进制特征,否则就可能使得程序执行不正常;另外二进制特征支持通匹符,这样可以具有一定的通用性。然而,上述二进制分类技术,非常容易被干扰;对于二进制特征,只需要修改其中特定的字节就可以干扰分类的结果;并且二进制特征的选择需要避开可执行文件中地址相关的指令或代码,以保证二进制特征的正确性。另外,二进制数据库毕竟是有限的,会出现无法分类的情况。
技术实现思路
本专利技术提供一种可执行文件处理方法和装置,用以解决现有技术采用的分类方法不能对可执行文件进行有效分类的问题。为了解决上述问题,本专利技术采用的技术方案如下一方面,本专利技术提供一种可执行文件处理方法,包括基于可执行文件入口点文件偏移,查找可执行文件入口点;以预先设定的分析步数X为基准,依次对所述入口点后的各指令进行分析,获取可执行文件入口点后X条指令的操作码opcode,得到opcode组;以所述opcode组为分类条件,对各所述可执行文件进行分类处理。进一步地,本专利技术所述方法中,所述预先设定的分析步数X=2n,其中,η为正整数。·进一步地,本专利技术所述方法中,所述opcode组由X条指令对应的各opcode的第一个字节组成。进一步地,本专利技术所述方法中,还包括将各所述可执行文件的opcode组与杀毒引擎的病毒记录相关联;所述杀毒引擎进行查毒时,获取待检查可执行文件的opcode组,判断该opocde组是否与某一条或几条病毒记录相关联,若是,利用当前关联的病毒记录文件对所述待检查可执行文件进行检查。进一步地,本专利技术所述方法中,当无法获取满足所述分析步数X的opcode时,在组成opcode组时,将剩余位设置为空;或者,直接将当前获取的opcode组成opcode组。进一步地,本专利技术所述方法中,利用反汇编引擎顺序解析所述入口点指令,并从反汇编引擎中获得入口点指令的指令长度、指令opcode和指令类型。进一步地,本专利技术所述方法中,所述依次对入口点后的各指令进行分析,获取可执行文件入口点后X条指令的操作码opcode,具体包括步骤I,创建指令流栈;步骤2,判断当前分析的指令是否为Transfer指令,若是,执行步骤3 ;否则,执行步骤4 ;步骤3,获取指令的跳转目标地址后压入所述指令流栈,并分析所述指令以及所述指令流栈内目标地址对应的指令流,获取各指令的opcode ;步骤4,获取指令的opcode后,按着指令长度定位下一指令的方式,分析下一指令。进一步地,本专利技术所述方法中,所述分析所述指令以及指令的目标地址对应的指令流,获取各指令的opcode,具体包括当所述Transfer指令类型为函数调用CALL指令或者无条件跳转JMP指令时,获取该指令的opcode,并将指令流转到指令流栈内的所述CALL或者JMP指令的跳转目标地址对应的指令流继续进行分析,获取指令opcode ;当所述Transfer指令类型为条件跳转JCC指令或循环LOOP指令时,获取该指令的opcode,并按着指令长度定位下一指令的方式,分析下一指令,并在当前指令流指令数无法满足分析步数时,将指令流转到指令流栈内所述JCC或LOOP指令的跳转目标地址对应的指令流继续进行分析,获取指令opcode。进一步地,本专利技术所述方法中,当所述Transfer指令为函数调用CALL指令,且所述CALL指令为间接调用时,或者,当所述Transfer指令为条件跳转JCC指令,且所述JCC指令为间接跳转时,若无法获得指令的跳转目标地址,则记录该指令的opcode后,按着指令长度定位下一指令的方式,继续下一指令的分析。进一步地,本专利技术所述方法中,当所述Transfer指令为无条件跳转JMP指令,且所述JMP指令为间接跳转时,若无法获取间接跳转目标地址,则记录该指令的opcode后,停止本指令流分析,并查找指令流栈是否为空,如果不为空则弹栈得到新指令流地址,转到该地址对应的指令流继续分析,获取指令opcode ;如果指令流栈为空,则停止分析。进一步地,本专利技术所述方法中,当所述Transfer指令类型为函数调用CALL指令,且所述CALL指令的调用方式为跳转表时,或者,当所述Transfer指令类型为无条件跳转JMP指令,且所述JMP指令的跳转方式为跳转表时,所述分析指令流栈内目标地址对应的指令流,具体包括将跳转表中所有跳转目标地址压入指令流栈,再将指令流转到指令流栈栈顶目标地址,在分析栈顶目标地址对应的指令流后,若当前指令流的指令数无法满足所述分析步 数,则将分析栈顶目标地址得到的opcode丢弃,并将所述栈顶目标地址弹栈,继续转到栈顶目标地址进行指令流分析,直到得到满足分析步数的opcode ;或者,未得到满足分析步数的opcode,记录分析栈内最后一个目的地址得到的opcode。进一步地,本专利技术所述方法中,当所述Transfer指令类型为函数调用CALL指令,且所述CALL指令的调用方式为直接调用时,将返回地址压入所述指令流栈,当分析CALL指令的跳转目标地址对应的指令流时,若遇到RET返回指令,则将指令流转到所述返回地址对应的指令流继续分析;其中,所述返回地址为CALL指令的后一条指令对应的地址。另一方面,本专利技术还提供一种可执行文件处理装置,包括A 口点查找模块,用于基于可执行文件入口点文件偏移,查找文件入口点;指令分析模块,用于以预先设定的分析步数X为基准,依次对所述入口点后的各指令进行分析,获取可执行文件入口点后X条指令的操作码opcode,得到opcod本文档来自技高网
...

【技术保护点】
一种可执行文件处理方法,其特征在于,包括:基于可执行文件入口点文件偏移,查找可执行文件入口点;以预先设定的分析步数X为基准,依次对所述入口点后的各指令进行分析,获取可执行文件入口点后X条指令的操作码opcode,得到opcode组;以所述opcode组为分类条件,对各所述可执行文件进行分类处理。

【技术特征摘要】

【专利技术属性】
技术研发人员:周辉徐传宇李智鹏
申请(专利权)人:北京奇虎科技有限公司奇智软件北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1