這道題,踩了兩次一樣的坑,先說下遇到的麻煩,ida不能反編譯成C,還有就是這道題名字的中文叫做迷宮,這個坑以前就踩過了,今天又踩了一次
首先,打開ida,查找main函數,發現在左邊的函數框里,沒有主函數(因為有花指令,如何消除這個的話https://blog.csdn.net/Palmer9/article/details/104157882這位師傅的博客有講),所以到內存里找
發現無法進行f5反編譯,沒辦法了,打開ollydbg,進行字符串查找到主函數。
然后進行調試,可以發現這里是一個for循環語句,並且比較14次,所以需要輸入的字符串是length為14
接着往下看可以知道,有4個分支語句,其跳轉的基指令是0x401112,所以知道這里用了switch語句,並且對0x40807c與0x408078進行了加1與減1的運算
然后查看基指令所存儲的事件值
這里我犯了個錯,由於我不知道這是個迷宮題,也沒去ida里的字符串去看,所以我想的是直接用兩次a,與4次c就可以出正確答案,雖然congratulations了,但答案是錯的,我就去查了別人的wphttps://blog.csdn.net/Palmer9/article/details/104157882才發現,原來這是到迷宮題,從而了解到了花指令。
所以在到內存中找到迷宮並進行整理
+是起始點,F是終點,所以答案是ssaaasaassdddw
flag{ssaaasaassdddw}
總結一下:了解到了花指令,鍛煉了od調試能力,學會了個英文單詞