-
-
[原创]看雪CTF TSRC 2018团队赛第八题
-
发表于: 2018-12-17 12:07 3772
-
又是一个控制台的程序,所以很容易找到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函数进行分析。
[峰会]看雪.第八届安全开发者峰会10月23日上海龙之梦大酒店举办!
赞赏记录
参与人
雪币
留言
时间
一笑人间万事
为你点赞~
2022-7-27 01:51
心游尘世外
为你点赞~
2022-7-26 23:48
飘零丶
为你点赞~
2022-7-17 03:23
Editor
为你点赞~
2018-12-17 18:21
赞赏
他的文章
- vmp3.5模拟x86分支指令je、jne、jge和jl的分析 19523
- [原创]vmp trace的优化处理 18361
- [原创]基于LSTM的二进制代码相似性检测 21300
- [原创]混合布尔算术运算的混淆及反混淆 19980
- [原创]利用机器学习分析vmp的思路 18549
谁下载
无
谁下载
无
谁下载
看原图
赞赏
雪币:
留言: