windows_c++_z3

打ctf的时候经常遇到z3求解的情况,一般思路就是把程序中的C语言代码转化为pyton代码,从而进行Z3求解,但我总觉得把c代码转换为python有些浪费时间,于是学一下在c++中使用z3
 
在c++中使用z3的文章很少,而且大多都是linux下的,至此,我记录了关于windows下c++ 使用z3的方法

一、环境搭建

1、编译

我们可以选择在官网上下载源码进行编译,也可以直接下载官网提供的编译好的文件
手动编译的话需要用到VS自带的命令行编译工具,要编译64位z3库就使用第一个
0
 
编译命令如下 python scripts/mk_make.py -x cd build nmake
自己编译的话,用时会比较长,大概半个多小时才能编译成功

2、使用

编译完之后该怎么使用呢,我们需要借助VS来进行使用
我们新建一个项目(在任意位置都可以),之后随便找一份z3 c++案例
然后在项目属性里面修改三个地方
(1)、附加包含目录
0
 
这里需要我们包含z3的头文件,注意,如果是直接下载的官网上的编译好的文件,那么我们可以直接导入z3-4.11.2-x64-win\include 目录即可
如果是我们自己编译的z3,那我们需要导入 z3\src\api\c++ 和 z3\src\api 两个目录
(2)、附加库目录
0
这里需要填入libz3.lib的目录
(3)、附加选项
0
这里需要填入 libz3.lib 的路径
至此,vs上的环境就设置完成了
我们的头文件不需要加引号
0
 
0
 
3、运行问题
0
只需把 libz3.dll 文件放入C:\Windows\System32 目录下即可正常运行
官网地址:
参考:
 
 

二、注意点

1、在面对逻辑有移指令时,c++和pytohn类似,都需要使用 lshr 函数来表示逻辑右移
2、在实际使用过程中(指逆向ctf题目),我发现,C++ Z3 受限于变量类型,我们需要手动去修改或者重写一部分代码来使变量类型正确
0
但这样的话,就又步入了python的后尘...

__EOF__

本文作者_TLSN
本文链接https://www.cnblogs.com/lordtianqiyi/articles/16776667.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   TLSN  阅读(323)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示