首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到20条相似文献,搜索用时 31 毫秒
1.
张晔  陆余良 《计算机应用》2017,37(12):3581-3585
可编程逻辑控制器(PLC)是工业控制系统的重要组成部分,控制着各类物理设备及工艺流程。无论是攻击者的恶意篡改还是内部人员的编程错误所造成的PLC控制程序错误都将严重威胁设备及人身安全。为解决该问题,提出了针对PLC程序的控制流分析方法。首先,利用flex和bison分析了源代码的词法及语法结构;其次,通过分析抽象语法树(AST)生成并优化了不含指令副作用的中间表示;最后,在中间表示的基础上划分基本块,并以此为基本单元构建了程序的控制流图。实验结果表明,所提方法能够恢复语句表形式PLC程序的控制流结构,为程序理解和安全性分析提供了基础。  相似文献   

2.
带控制流的静态函数调用分析方法   总被引:2,自引:0,他引:2       下载免费PDF全文
提出一种带有控制流的静态函数调用分析的方法,通过建立模型,对源程序进行静态分析,得到程序中的控制流信息和函数调用信息。和已有的静态函数调用关系图分析工具calltree和Source Insight相比,该方法生成的函数调用流图不仅能展现函数间的调用次序,还可以了解程序设计的逻辑复杂度,有助于代码阅读和分析人员更快更好地理解程序结构以及设计流程,并为分析程序控制条件、设计路径覆盖测试用例和进行程序优化奠定基础。  相似文献   

3.
在软件日益丰富的信息时代,程序的正确性验证问题需要深入地研究。提出了基于抽象解释和数值熵协同的数值程序正确性分析方法。利用抽象解释理论框架对数值程序进行抽象解释分析,提取不变量的抽象域区间;在抽象域区间上进行数值熵运算;运行程序获取数值变量的实际取值,计算数值熵;将抽象域区间数值熵和实际数值熵信息进行对比分析,准确地判断程序的正确性等性质。单纯的抽象解释分析只可以近似得到数值变量的取值范围,而引入数值熵算法,在取值范围的基础上对程序静态分析的准确性进一步检验,同时也做到了对程序的正确性验证。通过C语言程序实例,对抽象解释基础上的熵值分析方法进行了验证,证明了该分析方法的可行性和正确性。  相似文献   

4.
基于变量使用的静态测试方法研究   总被引:1,自引:1,他引:0  
基于对程序源代码的静态分析方法,针对C/C++程序中的变量定义未使用故障和变量未初始化故障,提出了一种自动测试方法.以变量定义未使用故障和变量未初始化故障的表现形式为基础,从面向具体故障的测试思想出发,并以此为基础,综合应用了抽象语法树和控制流图,提出了一种静态查找这些故障的方法.测试结果表明,该方法能够有效检测变量使用的故障,提高了测试结果的精度.  相似文献   

5.
为提高程序编写的正确率,减少软件开发和维护开销,提出一种基于错误模式和模型检验的静态代码分析方法。该方法将C语言程序常见的错误模式以CTL公式表示,形成可扩展的CTL公式库,生成待检测程序的控制流图(CFG)后,将CFG抽象并转化为等价的 Kripke结构,利用标号算法实现模型检验,由此验证程序的正确性。基于CoSy编译平台的实验结果表明,该方法能正确查找出程序中存在的错误模式,且具有良好的可扩展性。  相似文献   

6.
基于语义约束的资源工作流并发正确性保证   总被引:7,自引:1,他引:7  
控制流结构中并发变迁的正确性是工作流模型正确性的基础.为保证模型的正确性,提出了资源语义约束工作流网的基本概念,丰富了控制流的数据语义,给出了两方面的控制流并发正确性:并发控制流与其数据语义的一致性检测算法及改正原则,保证了模型中的并发控制流结构的正确性;实例中基于数据语义约束的并发变迁正确性保证机制,提出了申请锁和释放锁的算法,保证了工作流实例中并发执行的正确性。  相似文献   

7.
提出一种基于基因表达式编程(GEP)算法、编译器技术、虚拟机技术的路径覆盖测试用例生成方法。该方法使用编译器技术获得程序的静态控制流路径集合,针对集合中的每一条静态控制流路径,使用GEP算法生成覆盖特定路径的测试用例,采用虚拟机完成结果计算,其中有效的结果即所需的测试用例。实验结果证明,该方法能高效、准确地得到覆盖特定控制流路径的测试用例。  相似文献   

8.
软件安全性测试是保证代码质量的重要途径,Concolic测试在实际操作中存在路径爆炸和约束求解能力不足等局限。本文提出一种有导向的Concolic测试方法,针对容易产生缺陷的危险代码区域,依据控制流和数据流属性,采用回溯的方式推导出静态可达路径信息和必要的符号变量,实现对危险代码区域的覆盖测试。实证研究结果表明,通过规避对不关心路径和符号变量的分析,所提方法覆盖测试危险代码区域的效率明显得到提升,具备更强的缺陷检测能力。  相似文献   

9.
李沁  曾庆凯  袁志祥 《软件学报》2014,25(6):1143-1153
目前,针对线程信息流的验证研究主要着重于时间信道.然而,由于线程程序中线程控制原语存在函数副作用,对此类原语的不恰当调用亦可引起非法信息流,有意或无意地破坏程序的非干扰属性.因此,提出以验证线程程序信息流为目的依赖逻辑,其可表达线程程序的数据流、控制流以及线程控制函数的副作用,推理程序变量和线程标识符之间的依赖关系,进而判定是否存在高机密性变量对低机密性变量的干扰.  相似文献   

10.
隐式流对于污点分析方法的准确性有重要影响。为此,提出一种基于程序单静态赋值形式的隐式流检测方法。通过生成控制流图的必经节点树检测控制依赖关系,计算必经边界发现程序汇合点,引入虚拟取值函数获得汇合点变量的多个赋值,从而判别变量取值分歧并标记污点属性。与人工审计结果的对比证明,该方法能够诊断2个污点分析工具的污染缺失和污染过度问题,有效降低隐式流分析的误报率和漏报率。  相似文献   

11.
程序静态分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分析、控制流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。首先对程序静态分析的特点、常用静态分析技术、静态分析实现方式进行描述,然后通过一个实例讲解C语言静态代码分析中函数与变量的调用关系的实现方法,总结了现今在C语言调用关系分析中可以借鉴的工具与实现方式。  相似文献   

12.
李丹  王震宇  井靖  王国好 《计算机科学》2013,40(Z6):315-319
间接跳转目标地址的识别一直是二进制代码控制流重构的难点之一,其跳转目标一般依赖于程序动态执行时的信息,传统方法无法精确识别。通过对控制流重构技术的研究,提出一种基于路径约束的间接跳转目标地址识别方法,即对于一个间接跳转,在初始控制流图的基础上构建从程序入口点到间接跳转的路径集合,对于每条路径,首先通过数据流分析相关技术得到跳转目标地址关于自由变量的一个表达式,然后对路径约束求解,得到满足约束的自由变量的一组特定解,并以此确定跳转目标表达式的值。通过该方法,每个间接跳转都可以根据路径集合确定跳转目标的地址集合。  相似文献   

13.
状态逻辑型程序设计语言   总被引:2,自引:2,他引:0       下载免费PDF全文
阎志欣 《软件学报》1994,5(10):24-32
本文提出了一种新的纯逻辑式子句型程序设计语言.文中给出了语言的语法,非形式语义,子句的过程解释和基于约束归结的推理系统.对该语言来说,程序包含三类变量:输入变量,输出变量和用于控制机器资源的程序变量;被程序定义的函数符号可用于构造项或子项,并且还可用作为谓词符号;不需要低效的最广合一.由于这些因素,一个子句集本身隐含了顺序,分支,迭代和递归多种控制结构使得容易构造高效的定理证明系统.这种语言将是一种有坚实理论基础的,高效的,实际有用的高级确定性语言.  相似文献   

14.
计算机软件的安全性和健壮性逐渐成为一个非常重要的问题,而自动软件形式化验证是一种验证软件程序安全性和健壮性的可靠性较高的方法。在自动软件形式化验证中,大规模数组和复杂循环导致状态爆炸,使得验证器无法在规定时间内完成验证,因此如何在保证验证正确性的前提下压缩数组规模是一个值得研究的课题。文章提出复杂循环等价类的定义和相关命题,并提出一种面向程序可达性验证的数组处理循环压缩方法,先利用控制流自动机和系统依赖图进行静态分析划分等价类,再根据循环依赖关系对等价类进行压缩,用压缩后程序的验证结果代替原始程序的验证结果。实验结果表明,文章提出的方法能够在保证验证正确性的前提下压缩程序的规模,提高验证效率。  相似文献   

15.
为轻松获得程序的可能执行路径,进而实现程序变量的状态跟踪,提出了一种C/C++源代码控制流提取算法,通过该模型获取控制流切片,产生局部控制流图,将数据流异常检测与安全子集检测相结合,弥补了单独使用安全子集方法无法跟踪数据流的不足,增强代码安全隐患的挖掘能力.利用控制流图化简,排除部分不可达控制流信息,提高跟踪效率.通过对3个Linux内核源文件的检测,验证了该方法不仅可以检测出违反安全子集的代码安全隐患,同时对代码数据流异常检测提供支持,准确率达94.9%.  相似文献   

16.
基于源程序获取实时控制系统的模式,不仅能够验证实现的模式与设计是否一致,还可使程序的最差情况执行时间(WCET)计算更为精准。为此,提出一种自动分析实时控制系统程序模式的方法。通过分析C语言源程序生成程序控制流图,对输入变量相关节点进行切片,形成依赖输入变量的控制流图(ICFG),建立ICFG每条路径的线性规划问题并求解,从而获得潜在的程序模式。在此基础上,计算指定模式下针对现代RISC处理器程序的WCET。在基准程序上的实验结果验证了该方法的可行性和有效性。  相似文献   

17.
一、引言大多数传统的程序设计语言本质上都是以赋值为核心并且基于显式控制流的计算式语言(如PASCAL和C)。这种风格的程序语言是针对von Neumann体系结构的。计算机应用的重点正在由数值处理转移到非数值信息处理,而von Neumann机器以及相应的程序语言在非数值处理(比如说符号推理)应用中的缺点是人所共知的。逻辑编程语言就是基于(一阶谓词)逻辑(及其变种)或其子集(如Horn子集)的计算机语言。它是一种以(符号)模式匹配为核心,没有(或很少有)显式控制流的推理式语言。逻辑程序设计最初提出主要是针对软件工程考虑,后来日本决定来用逻辑语言作为其新一代计算机结构(即第五代机)的核心语言(PRO-  相似文献   

18.
对非结构化的程序代码进行理解分析对代码理解能力不强的测试人员存在一定难度。为了减轻静态代码分析的难度,本文首先采用程序切片算法将程序进行预处理,利用过程蓝图对代码进行可视化操作形成程序的中间表示形式抽象语法树。然后对其构造和特点进行研究,提出抽象语法树的遍历算法。通过该算法得到程序的控制流图。最后,利用控制流图和控制树,对静态代码进行高效的控制流分析,监测这些代码是否满足安全性、可靠性等方面的指标,为检测和处理软件缺陷降低成本。  相似文献   

19.
传统的控制流混淆方案是通过引入一些特殊结构来混淆或隐藏原程序的控制流信息,但这会导致大量的额外开销,此外针对控制流中其他敏感信息,常用的混淆技术并没有完善的保护方案。针对这些问题,提出了基于隐式跳转的控制流混淆技术。分析建立程序的控制流图,获取每个基本块的依赖关系,建立状态转移模型,为每个基本块分配一个运行时状态,并根据该状态生成的密钥来对控制流的跳转、函数的调用及变量的引用等敏感信息进行加密保护,使之转换为需要在运行时解密才能使用的隐式形式,从而实现反静态分析。此外,针对相同对象的密文重复问题,提出了基于环境密钥的两阶段加密方案,进一步减少敏感信息的暴露。实验结果表明,该方案并不会对程序运行时性能造成很大影响,同时还能较为完善地帮助程序抵抗静态分析。  相似文献   

20.
一种需求驱动的缓冲区溢出检测算法   总被引:1,自引:0,他引:1       下载免费PDF全文
本文提出一种流敏感的静态检测算法。通过需求驱动的控制流分析和数据流分析,建立内存访问语句和函数调用语句发生溢出的线性约束,从而将缓冲区溢出的检测问题转换为线性约束求解问题。我们实现了该算法的原型,实验表明,该原型可以准确而高效地发现实际程序中的缓冲区溢出漏洞。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号