-
-
[原创]看雪CTF TSRC 2018团队赛第八题
-
发表于:
2018-12-17 12:07
3923
-
[原创]看雪CTF TSRC 2018团队赛第八题
又是一个控制台的程序,所以很容易找到sn的验证处。在把sn转换到16后,进行验证。这里有两个关键的函数需要分析
sub_401AC0和sub_401710
首先分析sub_401AC0,参数为我们输入的sn的16进制形式。ida反编译的代码看起来很复杂。首先调用了sub_402890获取前16个字节,然后进行了位置变换,可以当做4X4的二维数组的操作看待。
接下来在一个while循环里有一个stl模板库中vector的痕迹
通过比较stl的源码和动态调试分析发现,这是一个vector的push_back操作,操作的元素是一个复数,这个在后面的复数乘法运算中可以确定出来。这个while循环的作用就是把前面获取的16个字节转换到复数保存到vector对象,然后在进行复数的乘法运算,之后调用了sub_402D80。
在sub_402D80函数里也有vector的操作,配合动态分析发现。通过循环对每一列做快速傅里叶变换FFT,这个函数对应的是sub_402B90,然后再对每一行做FFT。回到
sub_401AC0函数继续分析,又进行了复数的乘法。调用sub_4033D0函数进行每一列和每一行的快速傅里叶逆变换。
最后进行运算结果的比较
因为这些操作都是可逆的所以可以编写相应的逆向算法来解密,相应的代码我会放到附件里,解密出前32个字节如下:
进入sub_401710函数进行分析。
[注意]看雪招聘,专注安全领域的专业人才平台!