-
-
[原创]KCTF2019_q4_第三题_街机少年
-
发表于:
2019-12-6 16:32
7052
-
队友给力,很快就用ida把源码逆出来整理好了,我也就直接看源码测试分析瞎折腾了
看了大半天也没琢磨出具体是个什么算法模型,只看出来有两种基本操:
正确的A操作,读取解码后的注册码,一番拆解/查表/计算得到x,y,对T2的数据做减法:T2[x - 1] -= y
正确的B操作,读取解码后的注册码,一番拆解/查表/计算得到x,y,对T2的数据做减法:T2[k] -= (k * k + 1) % T2[k] + 1,其中的k是初始值为5,依次加4取模15
A和B轮换进行,在最后一步A操作完成后T2全0则达到目标,如果B操作后T2全0会失败
感觉直接硬碰硬不是太好对付,转而改变思路,采用万能的穷举大法试一试
对check函数中的几个跳转点稍作修改返回当前状态,为穷举逻辑提供接口
发现穷举可行,每次给两个字节然后调用check函数探测结果,如果状态满意就滚动到遍历下一个索引位置
为了探测多解情况,每个位置穷举出两个解,发现大部队都相同,只有一处出现差异情况
具体运行结果如下:
i=00000001.key=883D
i=00000001.key=883D
i=00000002.key=C888
i=00000002.key=C888
i=00000003.key=43C8
i=00000003.key=43C8
i=00000004.key=A843
i=00000004.key=A843
i=00000005.key=F9A8
i=00000005.key=F9A8
i=00000006.key=42F9
i=00000006.key=42F9
i=00000007.key=F642
i=00000007.key=F642
i=00000008.key=2AF6
i=00000008.key=2AF6
i=00000009.key=202A
i=00000009.key=212A
i=0000000A.key=D420
i=0000000A.key=D421
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2019-12-6 16:35
被ccfer编辑
,原因: