共查询到20条相似文献,搜索用时 31 毫秒
1.
可编程逻辑控制器(PLC)是工业控制系统的重要组成部分,控制着各类物理设备及工艺流程。无论是攻击者的恶意篡改还是内部人员的编程错误所造成的PLC控制程序错误都将严重威胁设备及人身安全。为解决该问题,提出了针对PLC程序的控制流分析方法。首先,利用flex和bison分析了源代码的词法及语法结构;其次,通过分析抽象语法树(AST)生成并优化了不含指令副作用的中间表示;最后,在中间表示的基础上划分基本块,并以此为基本单元构建了程序的控制流图。实验结果表明,所提方法能够恢复语句表形式PLC程序的控制流结构,为程序理解和安全性分析提供了基础。 相似文献
2.
3.
在软件日益丰富的信息时代,程序的正确性验证问题需要深入地研究。提出了基于抽象解释和数值熵协同的数值程序正确性分析方法。利用抽象解释理论框架对数值程序进行抽象解释分析,提取不变量的抽象域区间;在抽象域区间上进行数值熵运算;运行程序获取数值变量的实际取值,计算数值熵;将抽象域区间数值熵和实际数值熵信息进行对比分析,准确地判断程序的正确性等性质。单纯的抽象解释分析只可以近似得到数值变量的取值范围,而引入数值熵算法,在取值范围的基础上对程序静态分析的准确性进一步检验,同时也做到了对程序的正确性验证。通过C语言程序实例,对抽象解释基础上的熵值分析方法进行了验证,证明了该分析方法的可行性和正确性。 相似文献
4.
基于变量使用的静态测试方法研究 总被引:1,自引:1,他引:0
基于对程序源代码的静态分析方法,针对C/C++程序中的变量定义未使用故障和变量未初始化故障,提出了一种自动测试方法.以变量定义未使用故障和变量未初始化故障的表现形式为基础,从面向具体故障的测试思想出发,并以此为基础,综合应用了抽象语法树和控制流图,提出了一种静态查找这些故障的方法.测试结果表明,该方法能够有效检测变量使用的故障,提高了测试结果的精度. 相似文献
5.
6.
基于语义约束的资源工作流并发正确性保证 总被引:7,自引:1,他引:7
控制流结构中并发变迁的正确性是工作流模型正确性的基础.为保证模型的正确性,提出了资源语义约束工作流网的基本概念,丰富了控制流的数据语义,给出了两方面的控制流并发正确性:并发控制流与其数据语义的一致性检测算法及改正原则,保证了模型中的并发控制流结构的正确性;实例中基于数据语义约束的并发变迁正确性保证机制,提出了申请锁和释放锁的算法,保证了工作流实例中并发执行的正确性。 相似文献
7.
8.
软件安全性测试是保证代码质量的重要途径,Concolic测试在实际操作中存在路径爆炸和约束求解能力不足等局限。本文提出一种有导向的Concolic测试方法,针对容易产生缺陷的危险代码区域,依据控制流和数据流属性,采用回溯的方式推导出静态可达路径信息和必要的符号变量,实现对危险代码区域的覆盖测试。实证研究结果表明,通过规避对不关心路径和符号变量的分析,所提方法覆盖测试危险代码区域的效率明显得到提升,具备更强的缺陷检测能力。 相似文献
9.
10.
11.
12.
间接跳转目标地址的识别一直是二进制代码控制流重构的难点之一,其跳转目标一般依赖于程序动态执行时的信息,传统方法无法精确识别。通过对控制流重构技术的研究,提出一种基于路径约束的间接跳转目标地址识别方法,即对于一个间接跳转,在初始控制流图的基础上构建从程序入口点到间接跳转的路径集合,对于每条路径,首先通过数据流分析相关技术得到跳转目标地址关于自由变量的一个表达式,然后对路径约束求解,得到满足约束的自由变量的一组特定解,并以此确定跳转目标表达式的值。通过该方法,每个间接跳转都可以根据路径集合确定跳转目标的地址集合。 相似文献
13.
本文提出了一种新的纯逻辑式子句型程序设计语言.文中给出了语言的语法,非形式语义,子句的过程解释和基于约束归结的推理系统.对该语言来说,程序包含三类变量:输入变量,输出变量和用于控制机器资源的程序变量;被程序定义的函数符号可用于构造项或子项,并且还可用作为谓词符号;不需要低效的最广合一.由于这些因素,一个子句集本身隐含了顺序,分支,迭代和递归多种控制结构使得容易构造高效的定理证明系统.这种语言将是一种有坚实理论基础的,高效的,实际有用的高级确定性语言. 相似文献
14.
计算机软件的安全性和健壮性逐渐成为一个非常重要的问题,而自动软件形式化验证是一种验证软件程序安全性和健壮性的可靠性较高的方法。在自动软件形式化验证中,大规模数组和复杂循环导致状态爆炸,使得验证器无法在规定时间内完成验证,因此如何在保证验证正确性的前提下压缩数组规模是一个值得研究的课题。文章提出复杂循环等价类的定义和相关命题,并提出一种面向程序可达性验证的数组处理循环压缩方法,先利用控制流自动机和系统依赖图进行静态分析划分等价类,再根据循环依赖关系对等价类进行压缩,用压缩后程序的验证结果代替原始程序的验证结果。实验结果表明,文章提出的方法能够在保证验证正确性的前提下压缩程序的规模,提高验证效率。 相似文献
15.
为轻松获得程序的可能执行路径,进而实现程序变量的状态跟踪,提出了一种C/C++源代码控制流提取算法,通过该模型获取控制流切片,产生局部控制流图,将数据流异常检测与安全子集检测相结合,弥补了单独使用安全子集方法无法跟踪数据流的不足,增强代码安全隐患的挖掘能力.利用控制流图化简,排除部分不可达控制流信息,提高跟踪效率.通过对3个Linux内核源文件的检测,验证了该方法不仅可以检测出违反安全子集的代码安全隐患,同时对代码数据流异常检测提供支持,准确率达94.9%. 相似文献
16.
17.
一、引言大多数传统的程序设计语言本质上都是以赋值为核心并且基于显式控制流的计算式语言(如PASCAL和C)。这种风格的程序语言是针对von Neumann体系结构的。计算机应用的重点正在由数值处理转移到非数值信息处理,而von Neumann机器以及相应的程序语言在非数值处理(比如说符号推理)应用中的缺点是人所共知的。逻辑编程语言就是基于(一阶谓词)逻辑(及其变种)或其子集(如Horn子集)的计算机语言。它是一种以(符号)模式匹配为核心,没有(或很少有)显式控制流的推理式语言。逻辑程序设计最初提出主要是针对软件工程考虑,后来日本决定来用逻辑语言作为其新一代计算机结构(即第五代机)的核心语言(PRO- 相似文献
18.
19.
传统的控制流混淆方案是通过引入一些特殊结构来混淆或隐藏原程序的控制流信息,但这会导致大量的额外开销,此外针对控制流中其他敏感信息,常用的混淆技术并没有完善的保护方案。针对这些问题,提出了基于隐式跳转的控制流混淆技术。分析建立程序的控制流图,获取每个基本块的依赖关系,建立状态转移模型,为每个基本块分配一个运行时状态,并根据该状态生成的密钥来对控制流的跳转、函数的调用及变量的引用等敏感信息进行加密保护,使之转换为需要在运行时解密才能使用的隐式形式,从而实现反静态分析。此外,针对相同对象的密文重复问题,提出了基于环境密钥的两阶段加密方案,进一步减少敏感信息的暴露。实验结果表明,该方案并不会对程序运行时性能造成很大影响,同时还能较为完善地帮助程序抵抗静态分析。 相似文献
20.
本文提出一种流敏感的静态检测算法。通过需求驱动的控制流分析和数据流分析,建立内存访问语句和函数调用语句发生溢出的线性约束,从而将缓冲区溢出的检测问题转换为线性约束求解问题。我们实现了该算法的原型,实验表明,该原型可以准确而高效地发现实际程序中的缓冲区溢出漏洞。 相似文献