【软件分析第13讲-学习笔记】符号执行 Symbolic Execution

news2025/1/16 0:58:05

文章目录

  • 前言
  • 正文
    • 符号执行
    • 基于霍尔逻辑的符号执行
    • 谓词转换计算
      • 最弱前置条件
    • 动态符号执行
    • 符号执行:进一步探究
  • 小结
  • 参考文献

前言

创作开始时间:2022年11月16日18:46:31

如题,学习一下符号执行 Symbolic Execution的相关知识。参考:熊英飞老师2018《软件分析》课件。

正文

符号执行

程序的规约通常表示为前条件和后条件。

形成命题:

  1. 前条件->后条件
  2. 命题成立=逆命题不可满足
  3. 用SMT solver可求解

用符号执行发现:

  • 缓冲区溢出
  • 除零错
  • 路径可行性

基于霍尔逻辑的符号执行

霍尔三元组:{前条件}语句{后条件}

霍尔逻辑表示三者之间的推导关系。又称为公理语义

霍尔逻辑规则:

  • 空语句(Empty statement axiom schema)
  • 赋值语句(Assignment axiom schema)
  • 合成规则(Rule of composition)
  • 条件规则(Conditional rule)
  • 推导规则(Consequence rule)
  • 循环规则(While rule)

在这里插入图片描述
可参考:

  • 霍尔逻辑Hoare Logic https://blog.csdn.net/Campsisgrandiflora/article/details/111410348
    这篇博客讲的挺详细的。
    在这里插入图片描述
    大概了解了这个证明过程。

谓词转换计算

最弱前条件计算:给定后条件和语句,求能形成霍尔三元组的最弱前条件
最强后条件计算:给定前条件和语句,求能形成霍尔三元组的最强后条件

基于谓词转换的符号执行:

  • 给定输入需要满足的条件 P ,代码 c ,输出需要满足的条件Q
  • 前向符号执行:基于P、c计算最强后条件Q’,验证Q’->Q
  • 后向符号执行:基于Q、c计算最弱前条件P’,验证P->P’

最弱前置条件

参考:

  • weakest-precondition https://www.cs.umd.edu/~mvz/handouts/weakest-precondition.pdf
  • Weakest Precondition Calculus https://comp.anu.edu.au/courses/comp2600/Lectures/19wp1.pdf

Starting with a post-assertion, what is the weakest pre-condition that makes the assertion true?
In other words, what must be true before to make the assertion true after?

如果A->B,但是B不->A。那么B比A更弱。(相当于B包含了A)

在这里插入图片描述

赋值语句的示例:
在这里插入图片描述

还是比较好理解的。

更多的例子就不一一列出,可访问原参考链接。

动态符号执行

  • 混合程序的真实执行和符号执行
  • 在约束求解无法进行的时候,用真实值代替符号值
  • 代表工作:Concolic Testing,Execution Generated Testing

看了下案例:

在这里插入图片描述

好处应该就是可以根据具体的状态(Concrete state)求解能够探索新路径的值。可以不断迭代,从而遍历所有路径。

符号执行:进一步探究

参考:

  • Symbolic execution https://courses.cs.washington.edu/courses/cse403/16au/lectures/L16.pdf

在这里插入图片描述

符号执行可以生成一个具体的输入,使得程序出错(不符合规约)。但是不能证明程序没错。

自动定理证明器(如SAT、SMT求解器)来求解是否存在使程序出错的具体输入值。

在这里插入图片描述

小结

大概明白了符号执行。后续再补充完善。

创作结束时间:2022年11月16日20:20:44

参考文献

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/10264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕业设计jsp家校互动系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 家校互动系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用jav…

Linux用户操作(22.9.21)

学习目标: 用户账号管理Linux用户操作Linux用户组操作(一)用户账号管理 1、用户与用户组文件 在Linux系统当中,默认情况下所有用户信息保存在 /etc/passwd文件内,用户密码信息保存在/etc/shadow文件内;所…

43、Spring AMQP TopicExchange

1、TopicExchange 2、案例 3、通过配置类实现 1、配置TopicConfig 2、添加Listener 3、测试结果 4、通过注解实现 1、配置Linstener 2、测试结果 5、总结分析 学到这里,关于RabbitMQ的五种消息模型就结束了。 1、第一种消息模型:单个队列&#xff0c…

相机模型总结

目录相机模型前言1. pinhole 针孔模型2. Omnidirectional Camera Model 全向相机模型2.1 Unified model for catadioptric cameras 反射式相机统一模型2.2 Extended Unified model for catadioptric cameras (EUCM)2.3 Omnidirectional Camera Model By Scaramuzza畸变模型1. E…

linux篇【10】:进程信号

目录 一.信号入门 1.信号是操作系统内一个内置机制 2.前后台进程的几条命令与ctrlc 3.信号分类 4.信号产生是异步的 5.进程是如何记住这个信号 (3)存储方式:位图 二.signal ——对某信号设置自定义行为(捕捉)的函数 (1&a…

【Linux】进程间通信之消息队列

系列目录 进程间通信——共享内存 进程间通信——信号量 文章目录 一、概念 二、消息队列函数 1.msgget 2.magsnd 3.msgrcv 4.msgctl 三、掌握消息队列操作 一、概念 提供了一种从另一种进程发送一个数据块的方法。而且每个数据块都被认为含有一个类型,接…

Python3《机器学习实战》学习笔记(十):ANN人工神经网络代码详解(数字识别案例以及人脸识别案例)

文章目录一、构建基本代码结构1.1预处理数据的工具包1.2 初始化参数1.3工具类sigmoid1.4工具类矩阵变换1.5初始化theta1.6正向传播1.7反向传播1.8梯度下降1.9训练模块二、MNIST数字识别三、人脸识别四、总结一、构建基本代码结构 1.1预处理数据的工具包 """Dat…

2021年认证杯SPSSPRO杯数学建模C题(第一阶段)破局共享汽车求解全过程文档及程序

2021年认证杯SPSSPRO杯数学建模 C题 破局共享汽车 原题再现: 自 2015 年以来,共享汽车行业曾经“百花齐放”,多个项目获得巨额融资。但因为模式过重、运营成本过高、无法盈利等问题,陆续有共享汽车公司因为资金链断裂而倒闭。据…

RocketMQ存储设计的奥妙

RocketMQ作为一款基于磁盘存储的中间件,具有无限积压能力,并提供高吞吐、低延迟的服务能力,其最核心的部分必然是它优雅的存储设计。 1、存储概述 RocketMQ存储的文件主要包括Commitlog文件、ConsumeQueue文件、Index文件。 RocketMQ将所有…

温振传感器有几种传输方式?

在现代化社会中,各种机器无时无刻参与着我们的日常生活,承担在我们的周围承担起重要作用,轴承、电机、泵体等也成为工业文明中关键存在,它们的温度和状态影响着整个工业自动化系统运行的健康和效率。 长期以来,传感器技…

数字集成电路设计(四、Verilog HDL数字逻辑设计方法)(一)

文章目录1.Verilog语言的设计思想和可综合特性2. 组合电路的设计2.1 数字加法器2.2 数据比较器2.3 数据选择器2.4 数字编码器2.4.1 3位二进制8线-3线编码器2.4.2 8线-3线优先编码器2.4.3 二进制转化十进制8421BCD编码器(重要)2.4.4 8421BCD十进制余3编码…

ue4使用Niagara粒子实现下雨效果,使用蓝图调节雨量

一、使用Niagara粒子系统实现下雨效果 1. 首先创建一个雨水的材质 新建 — 材质 2. 创建Niagara系统 新建 新建 — FX — Niagara系统 — 来自所选发射器的新系统 — 下一步 — 选择Fountain — 点击号,点击完成 删除下面的“Add Velocity in Cone” 添加“…

矩池云如何自定义端口,访问自己的web项目

本文将向您介绍如何在矩池云租用服务器的时候自定义端口,并将您的 web 项目部署到自定义端口,最后实现在本地通过自定义端口对应链接访问服务。 上传代码和数据 首先,您需要将本地的项目代码和数据上传到矩池云网盘。这里为了方便您测试使用…

类似ps的python工具lama cleaner

Lama Cleaner是个类似ps图片的工具,可以把图片中不想要的部分p掉,或者填补图片中丢失的部分。用下来感觉还蛮靠谱,对于不会ps的人是福音,记录一下。 相关介绍:https://github.com/Sanster/lama-cleaner 1.安装 安装…

react 中 ref 管理列表

背景 最近在看 react 新的官方文档 的时候,看到这么一个标题,How to manage a list of refs using a ref callback,就是一个图片的列表,类似这样 然后点击按钮的时候,通过 scrollIntoView 这个 api 来让他滚动&#…

python生成模拟微信气泡图片

0. 起因 众所周知,借刀杀人最为致命,聊天也是如此。 最近我的群聊画风逐渐变味: 当然,这种图片的生产成本很低,只需在设置页关闭昵称显示,把聊天背景重置为灰色,然后利用截图工具截图&#xf…

【金融项目】尚融宝项目(十三)

25、充值 25.1、需求介绍 25.1.1、投资人充值 **1、需求描述 ** 标的产生后,平台展示标的,投资人就可以在平台投资标的,获取收益;投资人投资标的必须满足以下条件: 充值过程与绑定过程一致,也是在平台发…

Delphi 11.2 Alexandria程序集代码

Delphi 11.2 Alexandria程序集代码 高DPI VCL设计器-VCL设计器现在在设计时使用类似Microsoft Windows的样式,这意味着除非禁用此功能,否则设计器中的控件始终使用此样式绘制。此样式与Windows当前使用的浅色或深色主题相匹配。 编辑器选项卡-在版本11.2…

【3D目标检测】Frustum PointNets for 3D Object Detection from RGB-D Data

目录概述细节网络结构视锥候选框3D实例分割边界框参数回归损失函数概述 首先本文是基于图像和点云的,属于早期的模态融合的成果,是串行的算法,而非并行的,更多的是考虑如何根据图像和点云这两个模态的数据进行3D目标检测。 提出动…

亚马逊平台不给力?来Starday,告诉你什么是真正的高阶玩法

距2021年的亚马逊封号潮已经过去了一段时间,但其影响却依然在跨境电商行业间回荡。从4月份起,亚马逊就开始对违反平台规则的卖家进行封号。此后打击规模持续扩大,到6月中下旬,深圳一批头部卖家均被亚马逊平台下架,遭到…