BUUCTF-RE-[GUET-CTF2019]re

本文介绍了如何通过PEID识别并脱去UPX壳的方法,并展示了两种不同的求解数组元素的方式:手动计算和使用Z3求解器。最终通过解析得到flag。

BUUCTF-RE-[GUET-CTF2019]re

PEID查壳

在这里插入图片描述
发现其实是UPX的壳,所以我们要先脱壳
UPX脱壳
在这里插入图片描述

关键代码分析

我们将脱壳后的文件,使用ida打开
在这里插入图片描述查找字符串
在这里插入图片描述找到关键代码处

在这里插入图片描述
其实这种情况有两种解法
①:直接看代码,除就完事了
因为他是 N*a1[n] != M
那么我们就可以转化成
a1[n] = M // N
②:Z3求解器
利用z3求解器来求解各数组的元素

脚本

①:

a1 = [0]*32
a1[0]=chr(166163712//1629056)
a1[1] = chr(731332800 // 6771600)
a1[2] = chr(357245568 // 3682944)
a1[3] = chr(1074393000 // 10431000)
a1[4] = chr(489211344 // 3977328)
a1[5] = chr(518971936 // 5138336)
a1[7] = chr(406741500 // 7532250)
a1[8] = chr(294236496 // 5551632)
a1[9] = chr(177305856 // 3409728)
a1[10] = chr(650683500 // 13013670)
a1[11] = chr(298351053 // 6088797)
a1[12] = chr(386348487 // 7884663
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值