发明名称 一种基于符号执行的数组越界检测方法
摘要 本发明提供一种基于符号执行的数组越界检测方法,首先分析函数所有路径,输入:一个函数所有的逻辑路径,函数信息,控制流图,函数实参列表;输出:所有路径的约束系统;然后单个路径分析,输入:一条逻辑路径,函数信息,控制流图,函数实参列表。输出:该条路径的约束系统以及一些附加信息。约束系统:关于数组变量的所有范围约束;附加信息:函数信息,函数调用关系,路径信息。
申请公布号 CN105912459A 申请公布日期 2016.08.31
申请号 CN201610202057.9 申请日期 2016.04.01
申请人 北京理工大学 发明人 胡昌振;单纯;于泽群;薛静锋;赵小林
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 北京理工大学专利中心 11120 代理人 高燕燕
主权项 一种基于符号执行的数组越界检测方法,其特征在于,包括以下步骤:步骤一、分析函数所有路径,遍历函数的逻辑路径列表,得到其中的第一个路径对象path,如果path为null,则直接返回约束系统及附加信息,并退出该函数;否则将路径对象、函数信息、控制流图、实参列表作为参数,执行单个路径分析,将path指向下一个逻辑路径对象,然后执行步骤二;步骤二、单个路径分析,如果函数实参列表的大小不为0,执行步骤三;否则,执行步骤四;步骤三、根据函数信息,把实参的约束,值传递给形参变量,并添加到约束列表和变量类型列表中;步骤四、遍历该路径,得到它的第一个结点node;如果node为null,则直接返回约束系统及附加信息,并退出该函数;否则,执行步骤五;步骤五、通过node的编号信息,在控制流图中查找到对应的控制流结点,对该控制流图结点的语句类型进行判断,如果语句类型为VARIABLE_DEF,则执行步骤六;如果语句类型为Assign_EXPR,则执行步骤七;如果语句类型为for,则执行步骤八;如果语句类型为Other_EXPR,则执行步骤九;步骤六、语句类型为VARIABLE_DEF:将该语句涉及的变量添加到变量类型列表,如果涉及的是数组或整型变量,生成区间表示,利用区间与上下界生成约束,并添加到约束列表中;步骤七、语句类型为Assign_EXPR:如果语句涉及的变量是整型或数组变量,则进行区间运算,生成约束,并添加到约束列表中;步骤八、语句类型为for:通过控制流图结点,得到for的条件表达式信息,解析该条件表达式,得到整形变量名称,初始值,根据相应的约束规则,生成该整型变量的约束,并以(变量名称,约束)的形式存储到变量类型列表中;步骤九、语句类型为Other_EXPR:该语句是函数调用。根据实参和参数类型列表,如果实参是数组或整型变量,则要把约束赋给相应的形参,并且把所有实参的值赋给形参,然后执行步骤一分析函数所有路径。
地址 100081 北京市海淀区中关村南大街5号