ISCC Sad Code 200 CTF-Reverse

用die查壳

无壳,且为32位模式

拖入ida

按shifit+f12

找到correct

按ctrl+x交叉引用

编写脚本爆破

from z3 import *
v = [Int(('v%d' % i)) for i in range(8)]
s = Solver()
s.add(v[2] + 7 * v[1] - 4 * v[0] - 2 * v[3] == 0x212278F95)
s.add(5 * v[3] + 3 * v[2] - v[1] - 2 * v[0] == 0x146E7D971)
s.add(2 * v[1] + 8 * v[3] + 10 * v[0] - 5 * v[2] == 0x419AB1349)
s.add(7 * v[0] + 15 * v[1] - 3 * v[3] - 2 * v[2] == 0x7C35A4CA7)
s.add(15 * v[4] + 35 * v[7] - v[5] - v[6] == 0xF867F3C4C)
s.add(38 * v[6] + v[4] + v[7] - 24 * v[5] == 0x7AFCBCA32)
s.add(38 * v[5] + 32 * v[4] - v[6] - v[7] == 0x139360369D)
s.add(v[4] + 41 * v[6] - v[5] - 25 * v[7] == 0x653CABE3E)
s.check()
m = s.model()
result = [0] * 8
k = 0
for i in range(8):
    result[i] = str(hex(int(str(m[v[i]])))).replace("0x", "")

    s = result[i]
    for j in range(0, 8, 2):
        print(chr(int(s[j:j + 2], 16)), end='')
        # int(s[j:j+2], 16)将会将字符串s中的第j和j+1个字符作为十六进制数解析成整数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值