首页 > 其他分享 >带你入逆向坑,怎样在win10上安装并使用Z3库

带你入逆向坑,怎样在win10上安装并使用Z3库

时间:2023-06-04 13:04:06浏览次数:55  
标签:逆向 rand v10 50 v8 win10 v9 Z3 z3


带你入逆向坑,怎样在win10上安装并使用Z3库_v9

点点关注,本萝莉就亲亲你

上回说到三道不同平台的Reverse题目带你入逆向坑

本文主要是写一下自己在使用Z3约束器来解方程时遇到的坑

失败了好多次 才流泪写下这篇教程(好几次都想放弃)  避免大家和我一样浪费时间 百度谷歌了好久 也没找到方法 话说大佬们是不是有什么技巧

ps:大家给点个赞好不好 感谢

一、z3简单介绍

z3是由微软公司开发的一个优秀的SMT求解器(其实就是一个定理证明器),它能够检查逻辑表达式的可满足性。我们做CTF逆向题可能会经常用它来解方程。变量类型有整数Int,实数Real(需要得到float型的值时可以用这个),至于数组,就用BitVec好啦

先来说一下简单的使用吧

比如我想求一下a*b=0x24这个方程的解

带你入逆向坑,怎样在win10上安装并使用Z3库_v9_02

很明显,这里的解不止一个

这里就是z3的一个特点就是当解有多个的时候只会帮我们求出一个可能的解

如果我们想要拿到需要的解 那就增加约束条件  比如我想要得到当a==2时的解 就像下图所示:

带你入逆向坑,怎样在win10上安装并使用Z3库_v8_03

二、windows下安装z3步骤

1:确定你的Python版本为2.X(我的是2.7)

2:pipinstall z3或者pipinstall z3-solver是不行的(亲测)

3:必须采用源码安装

下载链接:

https://pypi.org/project/z3-solver/4.5.1.0/#files

我用的是这个版本 可以正常使用  好像有新版本  你自己可以尝试

4:下载对应电脑版本的

    我的电脑是win10x64位专业版

    所以我选择的是 

带你入逆向坑,怎样在win10上安装并使用Z3库_方程组_04

点击就可以下载

5:安装的话直接cmd 

(如果你的环境变量配置的是默认Python3的话  记得一定要切换到Python2.x\Scripts)

6:最后输入命令 

pipinstall z3_solver-4.5.1.0-py2-none-win_amd64.whl

带你入逆向坑,怎样在win10上安装并使用Z3库_方程组_05

注意:文件路径,我是直接放在了桌面

三、说一下z3的用法

以iscc中的一道逆向题为例

先放到我的ubuntu子系统中  file一下  格式file + 文件名

知道是elfx64位文件

于是直接载入IDAx64中

函数不是太多

直接双击左侧main

发现右侧图形模式很明显的可以看到一些关键的字符串  稍加思索  就可以知道sub_400766就是关键的函数 jz是关键跳转

带你入逆向坑,怎样在win10上安装并使用Z3库_v8_06

那么我们先F5一下

接着双击函数名

带你入逆向坑,怎样在win10上安装并使用Z3库_v9_07

看到有一个长度的判断  还有两个四元一次方程组  等等

带你入逆向坑,怎样在win10上安装并使用Z3库_v8_08

但是这样对于新手来说不太好看  那就美化一下

在s头上按Y键  将原来的char s[4] 改为chars[32]  点击OK

带你入逆向坑,怎样在win10上安装并使用Z3库_方程组_09

将那些让人头大的变量名按N重新命名(x1~x8)

就像下图一样

接着右键—Hidecast(隐藏声明)

最后变成这个样子

带你入逆向坑,怎样在win10上安装并使用Z3库_v9_10

具体计算的时候我们分开来做

先来求解第一个方程组

带你入逆向坑,怎样在win10上安装并使用Z3库_v8_11

这时候可以得到

[x4= 862734414,

x3= 829124174,

x2= 1801073242,

x1= 1869639009]

接着打算用python求srand的种子还有确定v1,v2,v7,v8,v9,v10,v11,v12的值的

但是不会

我是直接gdb动态调试得到的

v1= 0x16

v2= 0x27

v7= 0x2d

v8= 0x2d

v9= 0x23

v10= 0x29

v11= 0xd

v12= 0x24

有大佬用的C语言解的 我觉得很不错  贴上来

#include<stdio.h>

#include<stdlib.h>

intv1,v2,v7,v8,v9,v10,v11,v12;

intmain(void) {

srand(829124174^ 1801073242 ^ 1869639009 ^ 862734414);

v1 = rand() % 50;

v2 = rand() % 50;

v7 = rand() % 50;

v8 = rand() % 50;

v9 = rand() % 50;

v10 = rand() % 50;

v11 = rand() % 50;

v12 = rand() % 50;

printf("v1=%d \n v2=%d \n V7=%d \n v8=%d \n v9=%d \n v10=%d \n v11=%d \nv12=%d",v1,v2,v7,v8,v9,v10,v11,v12);

return0;

}

接着求解第二个方程组

代码如下

带你入逆向坑,怎样在win10上安装并使用Z3库_方程组_12

好啦  接下来就简单了

不过还缺一个库libnum(同样只能python2.x安装百度有教程)

我还是用kalilinux吧

带你入逆向坑,怎样在win10上安装并使用Z3库_v8_13

当然这个还不是flag

需要运行 输入得到的ampoZ2ZkNnk1NHl3NTc0NTc1Z3NoaGFG

即可得到

flag{th3_Line@r_4lgebra_1s_d1fficult!}

完。

后记:最好还是用linux吧

有些库太难装了


带你入逆向坑,怎样在win10上安装并使用Z3库_v8_14

标签:逆向,rand,v10,50,v8,win10,v9,Z3,z3
From: https://blog.51cto.com/u_14601424/6410396

相关文章

  • C++逆向分析——构造函数和析构函数
    构造函数与析构函数构造函数structStudent{inta;intb;Student(){printf("Look.");}voidInit(inta,intb){this->a=a;this->b=b;}};如上代码中,我们发现了存在一个函数,这个函数没有返回类型并且与结构体名称一样,那这段函数在什么时候执......
  • 逆向——汇编中的位运算
    汇编中的移位指令1、算术移位指令 SAL(算术左移)指令的操作与《SHL指令》一节中的SHL指令一样。每次移动时,SAL都将目的操作数中的每一位移动到下一个最高位上。最低位用0填充;最高位移入进位标志位,该标志位原来的值被丢弃:如,二进制数11001111算术左移一位,得到10011110:SAR(......
  • 2023安卓逆向 -- JNI学习(从开发到反编译)
    一、新建nativeC++项目,填写好项目信息,一路下一步即可二、创建好项目,直接点击运行,出现下面界面,说明我们的环境都没有问题三、Java层调用java层函数1、新建一个JavaClass,命名为JavaFun2、编写java函数packagecom.example.jnitest;publicclassJavaFun{publicstaticStr......
  • JS逆向实战16——猿人学第20题 新年挑战-wasm进阶
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!网站https://match.yuanrenxue.cn/match/20网站分析首先进去网站,我们查看下接口发现有两个值是改变......
  • IDA 逆向工程 反汇编使用
    IDApro7.0版本from:freebuf用到的工具有IDApro7.0 ,被反汇编的是百度云(BaiduNetdisk_5.6.1.2.exe)。首先,IDApro的长相如下:共有(File,Edit,Jump,Search,View,Debugger,Options,Windows,Help)9个模块,还有下面的诸多小菜单。现在我们点击File,选择Open打开一个文件,这......
  • [Android逆向] 重打包时报BrutException
    执行apktoolb--use-aapt2进行重打包时,重打包失败,抛出异常apktoolb/Users/***/work/appsApk/testApp--use-aapt2I:UsingApktool2.6.0I:Checkingwhethersourceshaschanged...I:Checkingwhethersourceshaschanged...I:Checkingwhethersourceshasch......
  • 【NSSCTF逆向】【2023题目】《doublegame》《fake_game》《easy_pyc》《For Aiur》
    题目doublegame解法感觉还是蛮抽象的一题打开看看是一个贪吃蛇,也不懂啥直接放进ida看看有很多函数,不想一个个看了,直接看string感觉有很多有用的信息,题目信息又说是doublegame所以应该还有一个游戏,看红框的内容应该是这个迷宫了,点进去通过交叉引用看看ok就是一个迷宫,......
  • win10系统蓝屏0xc0000098错误
    故障:客户处笔记本新增内存条后,开机win10系统报0xc0000098蓝屏错误分析:新增了内存条,可能有异常关机操作导致BCD启动文件损坏和丢失,需进行修复BCD文件准备:win10启动盘(最好和当前笔记本内的win10系统版本一致)报错图片:  解决步骤: 1、笔记本接入win10启动盘,开机按“F12”通......
  • hmac(md5,sha256) 魔改算法逆向
    2bebb2b85345bac93a790d1a6986b3d5经验1貌似特征码,需要在从伪代码切换到汇编模式,再点击看具体值2找出特征码,然后google再带算法,再带csource如md50x242070DBcsource3md5和sha1在transfrom4个特征相同,sha1多两个重命名经验根据上下文关系,需要点进去发现特征量,验......
  • win10 修改IP错误:出现一个意外情况,不能完成所有你在设置中所要求的更改
    注意:以下命令要以管理员身份运行cmd修改自动获取IP和DNS:netshinterfaceipsetaddressname="以太网"source=dhcpnetshinterfaceipsetdnsname="以太网"source=dhcp“以太网”是网卡适配器的名字,譬如我电脑上有名为WLAN和以太网的两个网络适配器,我这里选择......