simple

是c++,麻了,好多没见过的函数,甚至不知道数据在哪

这种好像是flag自输出的类型

然后调试进去

发现一些函数有变化,%d的值是给到了v9这个位置的,而v9是个指针,原数据是simple.exe,就是文件后缀



关键部分在这里嗷,这个其实有一点像是在走迷宫

照着switch的选项走,避开lost就行了。下面的是data

如何求最优解

1
2
3
4

#[4=1x4, 24=4x6, 40=28+4x3, 44=28+4x4, 52=28+4x4, 56=28x2, 60=28x2+4, 64=28x2+4x2,
#68=28x2+4x3, 72=28x2+4x4, 80=28x2+4x6, 100=28x3+4x4, 108=28x3+4x6, 116=28x4+4, 120=28x4+4x2, 136=28x4+4x6, 152=28x5+4x3,
#156=28x5+4x4, 160=28x5+4x5, 164=28x5+4x6, 168=28x6, 172=28x6+4]

关键在于怎么处理这些数据,这题比较类似走迷宫,只不过没有迷宫图

这些数据是对映在data里面的1还有99的数组中的位置(是db而不是dd哦),他们相对于28和 4 的运算

知道这一点就很简单了,只要走满26步,满足条件,就可以get到flag了

总结一下,能调试的题目到手了就尽量不要一直看静态分析,直接上手开调试就行,况且是这种数据不显现的。然后就是做题的时候要注意数据对比。观察变化,检查寄存器内容变化,用汇编看看会比反编译好懂很多。多google。