[发明专利]一种基于状态的路径敏感的符号化函数摘要算法有效
申请号: | 201710370313.X | 申请日: | 2017-05-23 |
公开(公告)号: | CN107193742B | 公开(公告)日: | 2020-09-04 |
发明(设计)人: | 王晓斌;屈鸿;汪一文;王留帅;符明晟;杨林川;季江州 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 成都弘毅天承知识产权代理有限公司 51230 | 代理人: | 李春芳 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 状态 路径 敏感 符号化 函数 摘要 算法 | ||
1.一种基于状态的路径敏感的符号化函数摘要算法,其特征在于,包括以下步骤:
步骤(1)、构建编译单元的函数调用图,然后按照拓扑序对函数调用图中的函数进行基于符号执行技术的上下文无关的过程内分析;
步骤(2)、在过程内分析过程中,对出现的漏洞进行报错,对于依赖于上下文环境确定的漏洞则推迟到函数摘要在函数调用点实例化和应用时再进行选择地报错;
步骤(3)、在过程内分析过程中,对于函数调用语句,首先判断是否存在被调用函数的函数摘要,如果不存在,则对被调用函数进行单独的过程内分析,收集被调用函数的函数摘要信息;
步骤(4)、在过程内分析中,对于函数调用语句,如果存在被调用函数的函数摘要,则在当前函数调用点使用上下文环境的信息对函数摘要进行实例化;
步骤(5)、符号化函数摘要实例化以后,收集函数摘要中各程序状态中对上下文环境副作用的信息,将这些副作用应用到上下文环境中,在函数摘要应用过程中对延迟报错信息进行检查,选择地对出现的漏洞进行报错;
步骤(6)、在过程内分析中,面对当前函数返回语句,收集当前符号化的程序状态作为当前函数的摘要信息。
2.根据权利要求1所述的一种基于状态的路径敏感的符号化函数摘要算法,其特征在于,所述的步骤(1),包括以下步骤:
步骤(11)、使用深度优先遍历法构建编译单元的函数调用图,在构建函数调用图过程中,忽略函数指针调用、C++多态调用以及递归调用;
步骤(12)、按照拓扑序对函数调用图中的函数进行上下文无关的过程内分析。
3.根据权利要求2所述的一种基于状态的路径敏感的符号化函数摘要算法,其特征在于,所述的步骤(2),包括以下步骤:
步骤(21)、过程内分析首先构建函数的控制流图,然后使用队列算法对控制流图中的元素进行符号执行,对函数进行上下文无关的过程内分析;
步骤(22)、在过程内分析过程中如果需要报错则直接报错,对于依赖于上下文环境确定的报错信息,则将其存储到程序状态中,延迟至函数摘要实例化和函数摘要应用时选择地报错;
步骤(23)、基于状态的路径敏感的符号化函数摘要φf定义为一组程序状态Sp的析取式,其中程序状态Sp是沿着可达路径p在符号执行完成之后所得到的,程序状态Sp中含有能够达到该程序状态Sp路径p所需要的约束条件Condp;
步骤(24)、程序状态Sp中约束条件Condp表示为一系列谓词的合取式,约束条件Condp用于在应用函数摘要时,判断当前程序状态是否是可行。
4.根据权利要求1所述的一种基于状态的路径敏感的符号化函数摘要算法,其特征在于,所述步骤(3),包括以下步骤:
步骤(31)、函数及其函数摘要使用map来组织,使用Itanium C++ABI中的名称修饰规则对函数名进行修饰,修饰过后获得符号名并作为map的键值;
步骤(32)、在过程内分析的过程中,如果遇到函数调用,则首先获取函数名,然后对函数名进行修饰,然后使用修饰过后的符号名在收集好的函数摘要map中查找,如果存在则进行步骤(4);
步骤(33)、如果不存在该函数的函数摘要,则创建一个新的符号执行引擎实例,使用该符号执行引擎实例对该函数进行上下文无关的过程内分析。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710370313.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:工艺管道仪表图物料清单的生成方法及装置
- 下一篇:供应链金融服务管理系统