BUUCTF [ACTF新生赛2020]SoulLike题解(非爆破)

查壳

发现无壳。

 

 

 IDA检查main函数

显然先检查了输入是否以  actf{  开头

进入sub_83A

无法进入

 点不进去是因为IDA限制了解析函数的长度,可以修改IDA下cfg目录的hexrays.cfg文件,如图

没有改动前,1024应该是64,可以改成更大的数值。

函数分析

函数共计有3000行多,无法完全展示,这里节选部分。

-------------------------省略-——---------------------

不难发现,函数首先是进行了加密,然后是一个比较。

我们注意到函数的加密很有规律:只使用了异或运算和自增运算符。

这说明这个函数是可逆的,只要把结果反过来运算一遍就是flag。

反向执行函数

把函数代码拷贝出来,删除判断,把里面的自增运算符全部换成自减运算符,然后把用于判断的v3数组内容填到a1数组里面。

最后粘贴到EXCEL表里面逆序就行(不会真有人写脚本吧)

第一列放序列,第二列放代码(粘贴过去就行)

然后一起逆序就行,第二列会被一起逆序。

把代码复制出来后略作处理就可以执行了。

结束

 

 把flag{}补上就是答案了

posted @ 2022-11-07 18:17  Carykd  阅读(267)  评论(0编辑  收藏  举报