-
-
[原创] kxctf2018 第二题 数据结构
-
发表于: 2018-6-19 23:04 3220
-
1. 先查看一下主函数,看下大体逻辑:
通过动态调试很容易看到主函数里几个函数的功能,得到第一个信息输入的字符长度为22。仔细看check函数。
2. 在check函数前面的局部变量初始化部分,有如下:
经过动态调试可以发现,它会将输入的22位字符分割成8块来使用,块大小分别是(2,2,3,2,4,3,3,3),假设输入为:01234567890abcdefghijkl,栈中中布局如下图:
上面是分的8块,下面是输入的原字符串。
接下来是比较重要的一个构造函数,
对v39进行初始化,经过分析可以知道一个node节点结构的构造,这是后面无意间发现的,其实启动动态调试后,查看String Views,可以看到
题目为数据结构,所以应该着重看一些数据结构的构造函数之类,又看到这些字符串,Google搜索得知这是前缀树,思绪要向这边靠拢,猜测这个求解问题是前缀树的关键词查找,甚至前缀树的比较?
回到v39的构造函数,如下:
其中v2就是一个node节点结构,然后通过调试可以知道v2+136后面跟着当前节点的子节点地址,v2+264值为node节点的子节点数,v2+268值用来标识当前节点作为关键字使用的次数。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
看原图
赞赏
雪币:
留言: