一种基于语义解释和合法栈约束的特殊控制流跳转程序验证方法技术

技术编号:38467285 阅读:29 留言:0更新日期:2023-08-11 14:44
本发明专利技术公开了一种基于语义解释和合法栈约束的特殊控制流跳转程序验证方法。C语言中的特殊控制流语句包括setjmp,其用于记录程序的返回点状态,以及longjmp函数,其用于无条件跳转至setjmp所记录的位置。使用LLVM,一种提供了统一中间表示的编译器框架,对原始程序进行转换,将无法直接感知语义的特殊控制流语句替换为同义的中间代码,从而使得验证程序可以支持它们的特殊语义。本发明专利技术还通过记录函数调用的深度,对longjmp函数的跳转目标进行了筛选,要求其跳转到栈尚未失效的位置。本发明专利技术可以支持C语言中的特殊控制流跳转语句,使验证工具更准确地符合实际语义。工具更准确地符合实际语义。工具更准确地符合实际语义。

【技术实现步骤摘要】
一种基于语义解释和合法栈约束的特殊控制流跳转程序验证方法


[0001]本专利技术涉及程序验证
,具体涉及一种基于语义解释和合法栈约束的特殊控制流跳转程序验证方法。

技术介绍

[0002]随着计算机技术的广泛应用,计算机系统的可靠性和安全性对人们而言也越来越重要。形式化方法是用于保证计算机系统的安全性、正确性的重要方法之一,通过数学逻辑建模对计算机系统的性质进行分析、验证与证明,可以最大程度地避免错误和安全隐患。
[0003]对软件进行验证是形式化方法的一个常见方向,其中将程序语义建模成逻辑公式,再使用SAT/SMT求解器等逻辑公式可满足性工具进行求解验证是常用方法。通过将循环结构进行有限次展开,可以将程序的控制流图转换为有向无环图的形式,从而便于进行验证。如果SAT/SMT求解器找到一组可满足解,则表明程序中可能存在违反特定性质的错误,否则则表明该类错误不存在。
[0004]但是,程序语义到逻辑公式的转换是否准确对验证结果的影响很大,错误或不准确的编码转换可能使得验证结果与实际不符。目前的程序验证工具对库函数调用的语义支持本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于语义解释和合法栈约束的特殊控制流跳转程序验证方法,其特征在于:包括三个部分,函数调用替换、合法跳转目标筛选、非直接跳转编码,其中,函数调用替换有以下步骤:(1)在程序中的函数调用内联指定的若干层后,检索所有调用C语言库函数setjmp和longjmp函数的LLVM指令,并分别加入两个指令集合,分别用符号S和L表示,其中setjmp用于记录程序的返回点状态,longjmp用于无条件跳转至setjmp所记录的位置,LLVM是一种提供了统一中间表示的编译器框架;(2)在程序入口基本块的头部创建两个分配指令,分配临时变量,分别用于表示返回值和跳转地址,用于在基本块之间跳转时传递参数,这两个临时变量分别用R和P表示;(3)对setjmp函数进行替换,具体操作为遍历S集合中的每一个调用指令I,对I执行相应语义解释转换,得到可能的跳转目标点基本块集合X;(4)对longjmp函数进行替换,具体操作为遍历S集合中的每一个调用指令I,对I执行相应语义解释转换;合法跳转目标筛选是一个递归处理的过程,包括以下步骤:(5)通过在函数调用前后插桩并遍历差分计数得到每个指令的调用栈深度,为了提高执行效率,这一步可以只执行一次,保留处理结果,从而在多次处理中共用结果;(6)对当前处理的longjmp调用指令,以当前指令所在调用栈的深度为限制参数,递归筛选其前向栈深度不单调增序列;(7)筛选得到当前longjmp可跳转的合法目标集合,用符号Y表示该集合;非直接跳转编码的目的是将indirectbr指令编码为相应的逻辑公式,其中indirectbr指令是LLVM中用于非直接跳转的一条分支指令,它跳转到给定地址对应的基本块,并给出了可能的目标基本块集合,这部分的步骤如下:(8)由当前非直接跳转指令所在基本块u到其后继基本块的转移条件为,跳转地址的值,用符号u.p表示,与v的标识地址值,用符号L(v)表示,这两个值相等,且当前基本块u的执行条件为真;(9)转移出错的条件为u.p不与跳转列表中的任何值相等。2.根据权利要求1所述的基于语义解释和合法栈约束的特殊控制流跳转程序验证方法,其特征在于:所述步骤(3)中对setjmp调用指令I的语义解释转换,具体包括如下步骤:(31)获取指令I的第一个操作数中的地址变量指针,用符号p表示该地址变量的指针;(32)创建存储指令S1,该指令向R中写入常量0,其中R指的是步骤(2)中定义的表示返回值的临时变量;(33)分裂指令I所在的基本块,使I指令与其之前的指令在两个基本块中,并记I所在的基本块为B;(34)将B加入集合X,其中集合X是步骤(3)中的可能的跳转目标点基本块集合;(35)在S1前方创建存储指令S2,S2指令将B的标识地址存入p,此处的标识地址指的是分配给被取地址的基本块的常量整数,用于表示一个基本块的地址,用符号L(B)表示该标识地...

【专利技术属性】
技术研发人员:钱品亦朱小军
申请(专利权)人:南京航空航天大学
类型:发明
国别省市:

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

1