当前位置:   article > 正文

python z3库学习_z3-py3-whl csdn

z3-py3-whl csdn

介绍

Z3 在工业应用中实际上常见于软件验证、程序分析等。然而由于功能实在强大,也被用于很多其他领域。CTF 领域来说,能够用约束求解器搞定的问题常见于密码题、二进制逆向、符号执行、Fuzzing 模糊测试等。此外,著名的二进制分析框架 angr 也内置了一个修改版的 Z3。

安装

pip install z3_solver
  • 1

注意不要安装z3,这是另外一个模块了。

整型(Int)方程求解

from z3 import *

a, s, d = Ints('a s d')
x = Solver()
x.add(a-d == 18)
x.add(a+s == 12)
x.add(s-d == 20)
check = x.check()
print(check)
model = x.model()
print(model)
# sat
# [a = 5, d = -13, s = 7]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

有理数(Real)型解方程求解

from z3 import *

x = Real('x')
y = Real('y')
s = Solver()
s.add(x**2 + y**2 == 3)
s.add(x**3 == 2)
check = s.check()
print(check)
model = s.model()
print(model)
# sat
# [y = -1.1885280594?, x = 1.2599210498?]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

位向量(BitVec)型解方程

from z3 import *

x, y, z = BitVecs('x y z', 8)
s = Solver()
s.add(x ^ y & z == 12)
s.add(y & z >> 3 == 3)
s.add(z ^ y == 4)
check = s.check()
print(check)
model = s.model()
print(model)
# sat
# [z = 27, y = 31, x = 23]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/929676
推荐阅读
相关标签
  

闽ICP备14008679号