2024羊城杯你这主函数保真么
0x00 前言
构造函数当主逻辑,第一次见
0x01 解
无壳,直接拖IDA
搜main可以发现有两个main,一个是_main还有一个是___main

查引用发现___main在_main之前调用

两个函数都没什么东西
_main

___main

不过发现___main有一个跳转,进去之后可以看到有个函数指针

动调发现这个是从下往上调用的
调试,直到有flag字样的函数出现,步入,发现调用了读起来像是构造和析构函数的东西,

继续跟进,发现两个test对象

一个个看,test是主逻辑,读字符串并进行长度判断,由此可知flag长度为0x21

再看test2,发现是个ROT13,应该直接调的库,没有魔改

之后继续跟进,发现在___tcf3内还有东西

这里面是Test2类的析构函数,而析构函数里面调用了输入在ROT13操作后的结果

之后可以看到一个encrypt函数

进去发现又是一段加密,用到了一些三角函数,经查询这是DCT变换

之后发现加密的结果丢到了这个变量_encrypted里面

既然Test2类的析构函数有搞事情,那么Test估计也有

这边F5一下可以看到清晰的逻辑

通过查看发现这个in数组就是上面的_encrypted里的东西,由此可以知道上面的三角函数应该是加密的最后一步了
这边比较有意思的是check的结果都是dq(double或quadro word,不过都要解析成双精度浮点数)

最后上脚本
1 | import numpy as np |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 The Blog of WoaW04!
