侧边栏壁纸
博主头像
Fup1p1 's Blog 博主等级

梦想是财富自由~

  • 累计撰写 38 篇文章
  • 累计创建 24 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

【Reverse】z3库在逆向中的运用

Fup1p1
2022-08-13 / 0 评论 / 0 点赞 / 766 阅读 / 0 字 / 正在检测是否收录...

安装z3库

pip install z3-solver

z3的应用

逆向题中,主要用于解线性方程
z3

z3函数解析

主要结构

> s=Solver()                       #创建约束求解器,且对象为s
> a=Int('a')		                 #定义表达式中出现的变量
>a,b=Ints('a b')                  #同时定义多个
> s.add(表达式)                  #添加约束条件
> print(s.check())	              #输出sat->有解,unsat->无解
> print(s.model())               #输出解

多种数据类型求解

{timeline-item 2020}Int 整型{/timeline-item} {timeline-item 2021}Real 有理数{/timeline-item} {timeline-item 2022}BitVec 位向量{/timeline-item}

逆向中的运用

题目-Universe_final_answer

关键函数
QQ截图20220813182030


from z3 import *
s=Solver()
v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11=Ints('v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11')
s.add(-85 * v9 + 58 * v8 + 97 * v6 + v7 + -45 * v5 + 84 * v4 + 95 * v2 - 20 * v1 + 12 * v3 == 12613)
s.add(30 * v11 + -70 * v9 + -122 * v6 + -81 * v7 + -66 * v5 + -115 * v4 + -41 * v3 + -86 * v1 - 15 * v2 - 30 * v8 == -54400)
s.add(-103 * v11 + 120 * v8 + 108 * v7 + 48 * v4 + -89 * v3 + 78 * v1 - 41 * v2 + 31 * v5 - v6*64 - 120 * v9 == -10283)
s.add(71 * v6 + v7*128  + 99 * v5 + -111 * v3 + 85 * v1 + 79 * v2 - 30 * v4 - 119 * v8 + 48 * v9 - 16 * v11 == 22855)
s.add(5 * v11 + 23 * v9 + 122 * v8 + -19 * v6 + 99 * v7 + -117 * v5 + -69 * v3 + 22 * v1 - 98 * v2 + 10 * v4 == -2944)
s.add(-54 * v11 + -23 * v8 + -82 * v3 + -85 * v2 + 124 * v1 - 11 * v4 - 8 * v5 - 60 * v7 + 95 * v6 + 100 * v9 == -2222)
s.add(-83 * v11 + -111 * v7 + -57 * v2 + 41 * v1 + 73 * v3 - 18 * v4 + 26 * v5 + 16 * v6 + 77 * v8 - 63 * v9 == -13258)
s.add(81 * v11 + -48 * v9 + 66 * v8 + -104 * v6 + -121 * v7 + 95 * v5 + 85 * v4 + 60 * v3 + -85 * v2 + 80 * v1 == -1559)
s.add(101 * v11 + -85 * v9 + 7 * v6 + 117 * v7 + -83 * v5 + -101 * v4 + 90 * v3 + -28 * v1 + 18 * v2 - v8 == 6308)
s.add(99 * v11 + -28 * v9 + 5 * v8 + 93 * v6 + -18 * v7 + -127 * v5 + 6 * v4 + -9 * v3 + -93 * v1 + 58 * v2 == -1697)
if s.check()==sat:
    print(s.model())
else: print('wrong')


QQ截图20220813183217

0

评论区