首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

符号执行 (Symbolic Execution) 与约束求解 (Constraint Solving)

当前,主流的约束求解器主要有两种理论模型:SAT求解器和SMT求解器。...2.4 SMT 问题求解 如上面的分析,SAT求解器只能解决命题逻辑公式问题,而当前有很多实际应用的问题,并不能直接转换为SAT问题来进行求解。因此后来提出来SMT理论。...SMT(Satisfiability Module Theories, 可满足性模理论),是在SAT问题的基础上扩展而来的,SMT求解器的求解范围从命题逻辑公式扩展为可以解决一阶逻辑所表达的公式。...当前,已经有大量的SMT求解器,例如微软研究院研发的Z3求解器、麻省理工学院研发的STP求解器等,并且SMT包含很多理论,例如Z3求解器就支持空理论、线性计算、非线性计算、位向量、数组等理论。...下面列举几种比较常见的SMT求解器(支持C/C++、Java、Python等主流编程语言的API): (正文完) end Reference: 符号执行研究综述 符号执行中的约束求解问题研究进展 约束求解

94210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Z3简介及在逆向领域的应用

    前几天在萌新粉丝群看到机器人分享了z3求解约束器,正好在寒假的时候仔细研究过这个模块,今天就和大家分享下z3的简易使用方法和在ctf中该模块对于求解逆向题的帮助 简介 z3 z3是由微软公司开发的一个优秀的...SMT求解器,它能够检查逻辑表达式的可满足性,通俗的来讲我们可以简单理解为它是一个解方程的计算器 SMT SMT即可满足性模理论,它是对一个实际问题求解的特征描述,这些特征就是我们所求解的特征,SMT会使用一个或多个这样的特征描述式求解...在Python中使用该模块,我们通常用到如下几个语句 Solver() Solver()命令会创建一个通用求解器,创建后我们可以添加我们的约束条件,进行下一步的求解 add() add()命令用来添加约束条件...上文提到我们可以将z3理解为一个解方程的计算器,对于求解方程,我们通常会经历四个步骤:设未知数,列方程,解方程,得到正解 使用z3模块,在我的眼中也是同我们解方程一样需要经历四个步骤,下面我们简单来看一下...总结 z3是一个强大的约束求解器,它不仅能处理一些看起来很复杂的逻辑问题,在逆向领域中往往可以简化我们计算步骤,增加求解效率,尤其是在ctf比赛中一些繁杂的RE题目通过z3来解往往显得非常简单,我们在解决问题时如果能灵活应用

    6K30

    Z3prover 学习记录

    z3作为微软开发的求解器,其提供的接口在很多应用程序和编程语言中都可以使用。...guide-examples.htm > 如果二进制版的z3不便于后期结合,还需要花时间学下z3py z3所使用的语法标准:http://smtlib.cs.uiowa.edu/papers/smt-lib-reference-v2.6...算数运算 基本运算 z3内置了对于整数和实数等数学类型的支持,而且貌似最新版已经合并了原先的插件——z3str,可以进行字符串处理,关于这部分文档似乎没有详细说明... declare-const可以用于声明整数和实数常量...,导致z3在求解非线性问题的时候不一定总能确定是否有解。...model (define-fun b () Real (/ 1.0 8.0)) (define-fun c () Real (/ 1535.0 64.0)) ) 除法运算 z3支持除法

    1.3K30

    斯坦福NLP课程 | 第8讲 - 机器翻译、seq2seq与注意力机制

    首先,需要大量的并行数据(例如成对的人工翻译的法语/英语句子) 1.6 SMT的学习对齐 [SMT的学习对齐] 问题:如何从并行语料库中学习翻译模型 P(x \mid y)?...生成源语句的编码 源语句的编码为解码器RNN提供初始隐藏状态 解码器RNN是一种以编码为条件生成目标句的语言模型 注意:此图显示了测试时行为 → 解码器输出作为下一步的输入 2.5 Sequence-to-sequence...序列到序列不仅仅对机器翻译有用 许多NLP任务可以按照顺序进行表达 摘要(长文本 → 短文本) 对话(前一句话 → 下一句话) 解析(输入文本 → 输出解析为序列) 代码生成(自然语言 → Python代码) 2.6...带注意力机制的序列到序列模型 [带注意力机制的序列到序列模型] 将解码器部分的第一个token 与源语句中的每一个时间步的隐藏状态进行 Dot Product 得到每一时间步的分数 通过...注意力显著提高了NMT性能 这是非常有用的,让解码器专注于某些部分的源语句 注意力解决瓶颈问题 注意力允许解码器直接查看源语句;绕过瓶颈 注意力帮助消失梯度问题 提供了通往遥远状态的捷径 注意力提供了一些可解释性

    71971

    KDD 提前看 | KDD 里的技术实践和突破

    第三,在实践中无标记问题语料库必须是简单易获取的,从而能够支持后续数据加工处理,满足在线应用的需求。...第二步,本文利用 SMT 实现语句级别的翻译。 首先利用 KenLM 语言模型 (https://github.com/kpu/kenlm) 对单词翻译的结果初始化处理。...利用初始化得到的短语表和语言模型建立 SMT 系统,将医学专用语句转化为病人可理解的简单语句。...针对语句级别的翻译,本文使用 SMT 架构的模型验证翻译效果,主要指标包括:子字信息、BDI 的锚信息和在特定或普适性语料库中训练得到的语言模型的有效性。...应用 RNN 架构解码器计算解码输出节点 A={a1,...aK}。在解码推理阶段,采用了波束搜索技术。

    80030

    源码&二进制组成成分分析现状

    图二 二进制文件相似性通用模型架构 基于SMT的二进制相似性检测方法,将代码语义转换为约束条件,通过约束求解器来判断代码的相似性。...SMT求解器是用于解决SMT问题的理论工具,它们能够自动分析给定的逻辑公式,并判断其是否可满足。在软件工程、硬件验证、形式化方法等领域,SMT求解器被广泛应用于模型检测、程序分析、自动推理等任务中。...David Y等人[2]提出了一种基于SMT的统计方法,用于衡量二进制中两个过程之间的相似性。他们的相似性概念使得即使在使用不同编译器编译或被修改后,也能找到相似的代码。...该原型目前支持三种指令集架构(x86、ARM和MIPS),并可以在任何这些架构的漏洞二进制代码中发现漏洞。他们展示了无论底层软件指令集如何,都能够发现Heartbleed漏洞。...总结 目前的二进制检测方法中,基于SMT的检测方法在实际操作中,约束求解中的理论证明仍然存在很多问题和挑战,同时该方法计算复杂度很高,代价很大。

    51810

    腾讯云数据库再获顶会认可,论文入选 VLDB 2023

    业界现有同类工具要么不支持快照隔离级别的测试,要么效率较低。鉴于数据库系统的复杂性,以及通常无法获取数据库内部信息的现状,业内亟需一种黑盒快照隔离检查器。...PolySI采用SMT求解器(MonoSAT),并利用GPs的紧凑约束编码方案以及领域特定优化加速SMT求解。...PolySI在多类工作负载下均优于目前最先进的SI黑盒检查器,并能够扩展到大规模工作负载。...但诸多问题也随之而来,在现有数据库系统中,支持在线和事务性模式(schema)演化仍然具有挑战性,如数据一致性,在进行结构修改时,为确保数据的一致性,需要使用事务或其他机制来保证数据的完整性和正确性;其次是长时间运行...这使得Tesseract可以通过利用并发控制协议几乎“免费”地支持模式。

    42450

    腾讯云数据库两项黑科技入选国际顶会VLDB|附论文下载

    业界现有同类工具要么不支持快照隔离级别的测试,要么效率较低。鉴于数据库系统的复杂性,以及通常无法获取数据库内部信息的现状,业内亟需一种黑盒快照隔离检查器。...PolySI采用SMT求解器(MonoSAT),并利用GPs的紧凑约束编码方案以及领域特定优化加速SMT求解。...PolySI在多类工作负载下均优于目前最先进的SI黑盒检查器,并能够扩展到大规模工作负载。...但诸多问题也随之而来,在现有数据库系统中,支持在线和事务性模式(schema)演化仍然具有挑战性,如数据一致性,在进行结构修改时,为确保数据的一致性,需要使用事务或其他机制来保证数据的完整性和正确性。...这使得Tesseract可以通过利用并发控制协议几乎“免费”地支持模式。

    33030

    Superpack:突破 Facebook 移动应用程序的压缩极限

    Superpack 压缩利用常见的编译器技术,例如解析和代码生成,以及最近的创新,例如 Satisfiability modulo theories (SMT) 求解器,来找到最小的程序。...Superpack 有一个内置的 ANS 编码器,还有一个可插拔的架构,支持多个这样的编码后端。Superpack 通过识别上下文(其中要表示的序列由较低的熵)来改进熵编码。...我们如何使用 SMT 求解器来帮助压缩超出了本文的范围,将成为未来一篇博文的有趣话题。 压缩层还包括可插拔模块。...OCaml 在压缩端用于操作复杂的面向编译器的数据结构,并与 SMT 求解器进行接口对接。...它利用 Xz、Zstd 和 Brotli 压缩器作为可选后端来完成压缩工作。最后,Superpack 使用微软的 Z3 SMT 求解器来自动解析和重构各种代码格式。

    46130

    解决中国“卡脖子”问题:研究求解器的少数者

    在库克定理里,图灵机的计算过程可以用 SAT 表达出来,转化成一条条独立的语句,十分简单,但又极高效。库克定理指出,如果 SAT 问题可以快速求解,那么所有 NP 问题都可以快速求解。...导师苏开乐擅长的是逻辑系统,却支持他选择自己喜欢的求解算法研究。他是当时实验室里唯一做求解器的学生。在这种先天条件不足、后天支持有限的情况下,蔡少伟独自探索,过程的艰难可想而知。...那时,他有些犹豫:“求解器这事究竟能不能做?”心里没底,跑去咨询导师,叶老师很支持,说:“中国总得要自己的求解器,不要老觉得做不成,总得有人挑头。”...如今,除了SAT求解,蔡少伟也开始研究SMT(可满足性模理论问题),SMT公式可以看作是SAT与数学规划等背景理论的结合,SMT求解是更具挑战的方向,国内更是无人问津;同样地,葛冬冬与杉数的研究重心也从线性规划求解转到了整数规划和非线性规划求解...无论是从SAT到SMT,还是从线性规划到整数规划,蔡少伟与葛冬冬所传达的讯号是一致的:用求解器加速中国的工业发展。 从广义上看,求解器的意义不仅仅在于工业的发展。

    2.8K10

    学界 | 基于Apache MXNet,亚马逊NMT开源框架Sockeye论文介绍

    在 SMT 的流行趋势中,即使最强大的 NMT 系统也受益于微妙的架构调整、超参数调节和实证上有效的启发式技术。...与 SMT 不同,NMT 没有「事实上」的工具包来吸引绝大部分的社区注意力,因此未能涵盖来自最近文献的所有最佳想法。...表 5:EN→DE Groundhog 模型的训练速率(每秒的更新次数)和吞吐量(如工具包中所报告的,转换为每秒的源语句平均数量)。 ?...输入长度被分拣为相似长度的 batch 语句。 ? 表 9:在英翻德任务上,4 个 Volta P100 的训练速度如上图。...Sockeye 还支持多种优化器以及归一化、正则化技术,并利用当前的 NMT 文献提升了推断能力。用户可以很轻松地运行标准的训练流程、探索不同的模型设置,并结合新的想法。

    616100

    光子网络(Photon network)使用场景描述

    农业物联网公司准备在Alice农场所在的区块部署多个具备光子网络功能的多功能采集器,采集该区域的环境数据作为农业技术支持付费服务,公司可以大量布点以降低单点成本,配备专业的设备维护人员降低设备故障率,服务多个用户提升数据利用率...2.6跨链原子互换应用场景 跨链原子互换可以满足更加广泛的token兑换需要。...该公司产品支持现金和比特币支付,约1200美元或0.2BTC。...光子网络节点资金的安全依赖于光谱,为了保证光子网络节点的数据正确,用户可以在本地启动一个光谱节点,也可以连接到一个拥有稳定光谱节点的服务器(该服务器始终同步并可靠的工作)。...(3) 光子网络节点账户需要有足够的SMT。光子网络不会提醒用户节点账户中是否有足够的SMT,所以用户需要将足够的SMT转账到光子网络节点账户中,以支付打开通道等链上操作的交易费用。

    1.5K30

    干货 | 关于数学规划求解器lp_solve 这里有份超全面超详细的教程,你离lpsolve高手只有一步之遥!

    Pure C code Windows, Unix, Linux, Mac OSX 32 and 64 bit Also precompiled binaries provided 它是一个混合整数线性规划求解器...今天,本编就带领大家一步一步上手这个神器的求解器…… 说到这里,可能有小伙伴又不乐意了,不会又要撸代码吧?呃……不撸代码是不可能了,这辈子都不可能了。...只需要把需要求解的线性规划问题输入到求解器里面,然后点一下绿色的run按钮,就能马上出结果了。 ? 如下面所示: ? 关于x,y的取值和目标最优值已经求出来了。...另外,lpsolve还支持其他求解器的语法格式。...Python下使用lpsolve 环境配置 lpsolve目前最新也只能支持到Python2.6版本而已了,所以下面的演示也是基于Python2.6版本的,系统是64位Windows10系统。

    3.9K20

    深度学习模型的可靠性研究(综述)

    由于可满足性模理 论求解器难以处理非线性运算,因此基于可满足性 模理论的方法通常只适用于激活函数为分段线性的神经网络,无法扩展到具有其它类型激活函数的神经网络。 (2)神经网络的大规模特点。...3.1 基于可满足性模理论的方法 Katz等人提出具有实数算术原理的SMT求解器Reluplex[15],通过扩展单纯形(simplex)算法(用于解决LP实例的标准算法)以支持ReLU约束,并验证了激活函数为...Ehlers等人[21]考虑了整个神经网络的全局线性逼近,并使用整数算法来提升SMT线性逼近范围的精确性,减少了SMT求解器的调用次数。...具体地,他们利用基于分支定界算法的MIP求解器处理含有整数变量的非线性函数的编码,利用著名的big-M编码策略[53]的变体将许多非线性表达式线性化。...Tjeng等人[23]将分段线性神经网络的鲁棒性验证问题形式化为混合整数线性规划问题,通过精心设计的预求解方法和有效的剪枝算法显著地减少了搜索空间,相比于基于SMT的方法计算速度提升了若干个数量级,因此可以用于计算含有超

    68720

    干货 数学规划求解器lp_solve超详细教程 已

    Pure C code Windows, Unix, Linux, Mac OSX 32 and 64 bit Also precompiled binaries provided 它是一个混合整数线性规划求解器...今天,本编就带领大家一步一步上手这个神器的求解器…… 说到这里,可能有小伙伴又不乐意了,不会又要撸代码吧?呃……不撸代码是不可能了,这辈子都不可能了。...HTML, RTF output Export results to CSV, HTML, RTF output Show statistics about the model. ...只需要把需要求解的线性规划问题输入到求解器里面...另外,lpsolve还支持其他求解器的语法格式。...Python下使用lpsolve 环境配置 lpsolve目前最新也只能支持到Python2.6版本而已了,所以下面的演示也是基于Python2.6版本的,系统是64位Windows10系统。

    2.9K40
    领券