买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:中国人民解放军战略支援部队信息工程大学
摘要:本发明属于比较函数识别技术领域,具体涉及一种基于数据流特征的比较函数识别系统及识别方法。本发明通过分析函数的控制流,从中提取循环路径和分支路径,构建数据流并检测数据流特征是否匹配,通过将路径中的指令转为中间语言VEXIR指令,支持ARM、MIPS、PPC和x86指令集,不依赖源码等信息,并且受编译器选项、编译器版本以及优化等级的影响较小,对glibc库和自定义实现的比较类函数都有很好的识别效果。经实验评估表明,当缺少源码、函数名等信息时,相比于FLIRT和SaTC,CMPSeek有着更高的精准率和召回率。
主权项:1.一种基于数据流特征的比较函数识别系统,其特征在于:该系统包括CFG提取和循环检测模块、循环指令提取模块、比较操作分支模块、VEXIR指令生成模块、数据流构建模块、数据流分析模块和比较类函数识别模块;所述CFG提取和循环检测模块分析函数中是否包含循环路径;所述循环指令提取模块和比较操作分支模块分别用于提取循环块内和循环内比较操作分支到函数返回的指令;所述VEXIR指令生成模块借助于开源库pyvex将二进制代码转换为中间语言VEXIR指令,方便系统支持多种指令集架构;所述数据流构建和数据流分析模块从VEXIR指令中提取数据流中变量关系,生成数据流DFG并进行分析;所述比较类函数识别模块根据数据流特征检测循环路径和分支路径是否匹配,从而判断函数是否为比较类函数;包括以下步骤:步骤一、提取函数的控制流CFG,将基本块视为顶点v,基本块之间的跳转关系视为有向边e,将函数CFG转为有向拓扑图G,G={V,E}其中:V={v1,v2,…,vn},E={e1,e2,…,em},ek=vi,vj1≤k≤m,1≤i,j≤n步骤二、识别有向图G中是否存在循环;1若有向图G中不存在循环路径,直接认为其为非比较类函数;2若有向图G中包含循环路径,提取循环路径和从循环跳出到函数返回的分支路径,将循环路径和分支路径转换为中间语言VEXIR指令,构建数据流DFG;然后根据数据流DFG特征是否匹配,若匹配则认为是比较类函数识别,否则认定为非比较类函数;步骤一中调用IDAPro内置IDAPython插件的FlowChart类和self.succs函数获取V和E步骤二中使用开源库NetworkX的DiGraph函数快速构建有向图G,并调用simple_circles识别图G中是否存在循环;步骤二中使用开源库NetworkX的DiGraph函数快速构建有向图G,并调用simple_circles识别图G中是否存在循环;步骤二中若数据流DFG同时满足以下特征则识别为比较类函数,1数据流上存在环结构,并且环上存在比较运算和算术运算;2数据流上存在Cz点和Cmp对;3存在Cz点到Cmp对的路径,并且Cz点先于Cmp对出现;4环上Cmp对跳出循环后,都能到达函数Rt点;其中Cz点代表数据流中与零相比较的值,Cmp对代表数据流中参与比较的值,Rt点代表数据流中函数返回结果。
全文数据:
权利要求:
百度查询: 中国人民解放军战略支援部队信息工程大学 基于数据流特征的比较函数识别系统及识别方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。