预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共28页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN105678169A(43)申请公布日2016.06.15(21)申请号201511025350.4(22)申请日2015.12.30(71)申请人西安胡门网络技术有限公司地址710000陕西省西安市太白南路373号新长城大厦11502室(72)发明人崔艳鹏胡建伟(74)专利代理机构济南信达专利事务所有限公司37100代理人李世喆(51)Int.Cl.G06F21/57(2013.01)权利要求书2页说明书15页附图10页(54)发明名称一种二进制程序漏洞挖掘方法和系统(57)摘要本发明提供一种二进制程序漏洞挖掘方法,包括步骤:将目标二进制程序转化为汇编语言并进行静态分析;结合静态分析的分析结果对中间语言进行Promela模型建模;构建漏洞模型插入到Promela模型中;引入外部C代码,基于SPIN模拟执行所述Promela模型,检测漏洞。本发明还提供一种二进制程序漏洞挖掘系统,包括预处理模块、代码转化模块和模型检测模块。该方法和系统,引入中间语言BIL作为二进制程序到Promela模型的转化桥梁,实现了对二进制程序的自动化建模,同时利用SPIN的嵌C功能实现模拟执行,并引入外部C代码来弥补模型检测的不足。实验表明,该方法可以有效检测二进制程序的内存破环型漏洞。CN105678169ACN105678169A权利要求书1/2页1.一种二进制程序漏洞挖掘方法,其特征在于,包括步骤:步骤A,采用反编译器IDA将二进制程序转化为汇编语言,并基于IDA进行汇编语言层次的静态分析得到函数流图;步骤B,通过中间语言平台BAP将所述汇编语言转化为BIL语言,并结合静态分析的分析结果对所述BIL语言进行Promela模型建模;步骤C,构建漏洞模型,并插入到所述Promela模型中;步骤D,引入外部C代码修补SPIN,并基于修补后的SPIN模拟执行所述Promela模型,检测漏洞;步骤E,输出检测结果和漏洞信息。2.根据权利要求1所述的二进制程序漏洞挖掘方法,其特征在于,所述步骤B中结合静态分析的分析结果对所述BIL语言进行Promela模型建模包括步骤:B1,依据静态分析得出的函数流图,对BIL代码进行程序切片切分成BIL语句;B2,进行从切分后得到的BIL语句到Promela语句的细粒度代码转化;B3,将经过细粒度代码转化后的Promela语句构建、组装成Promela模型。3.根据权利要求2所述的二进制程序漏洞挖掘方法,其特征在于,所述步骤B1包括步骤:依据静态分析的函数流图,以sub函数为单位,将BIL代码切分成不同函数片断;对BIL代码中的汇编指令进行多维度匹配,将所述函数片断切分成指令集;对BIL语句的完备性进行检验,以将BIL指令集切分成BIL语句。4.根据权利要求2所述的二进制程序漏洞挖掘方法,其特征在于,所述步骤B2包括步骤:预先对BIL语句的各种特征进行总结,并构建BIL语句的特征池将其置于特征池中;将待转化的BIL语句与所述特征池中的特征进行匹配;将匹配后的BIL语句转化为符合Promela中嵌C语法的Promela语句。5.根据权利要求1所述的二进制程序漏洞挖掘方法,其特征在于,所述步骤C包括:对已知的软件漏洞样本进行分析总结,抽象出漏洞特征,用Promela语言描述漏洞特征,建立漏洞模型;采用代码插桩技术,将所述漏洞模型插入到所述Promela模型中。6.根据权利要求1所述的二进制程序漏洞挖掘方法,其特征在于,所述步骤D中引入外部C代码修补SPIN包括步骤:预先设置外部C代码,来构建执行所述Promela模型必要的系统资源、维护临时状态、处理SPIN无法处理的BIL中的表达式和关键字以及处理BAP无法解析的汇编指令;所述步骤D中基于修补后的SPIN模拟执行所述Promela模型,检测漏洞包括步骤:将Promela模型转化为C代码程序;使用编译器将转化后的C代码和外部C代码联合编译成一个可执行程序;执行编译好的可执行程序进行模型检测。7.一种二进制程序漏洞挖掘系统,其特征在于,包括预处理模块、代码转化模块和模型检测模块;所述预处理模块,用于采用反编译器IDA将二进制程序转化为汇编语言,并基于IDA进2CN105678169A权利要求书2/2页行汇编语言层次的静态分析得到函数流图;所述代码转化模块,用于通过中间语言平台BAP将所述汇编语言转化为BIL语言,并结合静态分析的分析结果对所述BIL语言进行Promela模型建模;构建漏洞模型插入到所述Promela模型中;所述模型检测模块,用于引入外部C代码修补SPIN,并基于修补后的SPIN模拟执行所述Promela模型,检测漏洞;输出检测结果和漏洞信息。8.根据权利要求7所述的二进制程序漏洞挖掘系统