前言:
世界还是抽象的~都说是顿悟赛实际上还是学到东西的。
Re-2
拿到以后标准查壳
无壳64
然后直接扔ida64去分析

先看最终判断

这里判断了v13和input值
这里input是我自己改名的因为input就是输入没变化,原本忘了,大概位置就是这里自己找
然后向上看v13怎么来的
v13
是从这里

这里这个莫名其妙函数不知道是什么不过可以问ai,问完大致意思就是v13是用来构造生成存储的数组然后v7是begin,v6是end然后v22是什么一个调用器?
所以可以得到v13是用v7+v6来决定产生的,所以分析v7和v6

这里我在分析完注释了v7和v6来源
所以不管v6还是v7主要都是依靠vector这个函数
这个函数可以直接写脚本时候调用问题不大
直接继续向上
v6和v7组要需要v23,18和v14

v14来自v11
然后就看到了一个核心函数

这个我改名的jiamihanshu就是核心加密函数
原本是叫obf…..什么的
进加密函数看一下

这里有异或操作
然后实际上这还是有轮加密就在那个obfF里面,这种加密名字叫Feistel解密轮

点金obFf函数就能看见移位a1移了3
再加上外面的异或就是很经典异或移位。
所以这是我认为的核心加密函数
所以已经了解核心加密函数就可以接着往上推
我们说到要v14,v14来自v11
而核心加密函数给了三个元素v12,v16和v11
已知v11往后要用
再看v12和v16

这里v16直接就有了v16[0~7],这里在我看来就是核心加密函数的密钥也就是v16
而v12应该就是原数据通过核心加密函数与密钥v16加密得到了v11
所以还是要看v12出自哪里?
v12出自v15

v15来自v21和v10
而v10来自v20也就是很长的一堆数据
所以v15就间接性由v20推到

流程结束了
所以我们由v16和v20经过流程就得到了v13然后用v13和flag比较就有了答案
但是啊这题由非预期解?不确定

在这下断点
然后进入v6
向上面翻一下就会看到ISCC{FLAG}

交了是对了
评论(0)
暂无评论