easy_Maze 梅津美治郎 寒假逆向生涯(16/100)
easy_Maze
這個題簡單,迷宮題目,需要動調,或者不用動調也行,可以自己算出地圖,我用的是動調。
生成地圖的兩個函數
只需要動調到這兩個函數的下一步后,找到儲存矩陣的空間的地址, 把這個地址轉到數據窗口跟隨. 運行到生成矩陣的下面一個函數. 得到生成的矩陣.
把數據復制下來,每個數據是 占了四個字節(小端存放),然后根據函數外可知地圖是7 * 7,緊接著把高28位的數據去掉,留下低四位,形成一副7*7的地圖,順著1按完asdw即可
即 UNCTF{ssddwdwdddssaasasaaassddddwdds}
梅津美治郎
這題的話,不難,只是得看出那個回調函數那里玄機
level1
直接得出字符串: r0b0RUlez!
level2分析
這里有個debugbreak函數,這函數的話,也就是相當于一個int 3指令,引發一個中斷,把執行權移交給調試器,如果沒有調試器,那就移交給其他異常處理回調函數,如果都沒有,那么程序就自己斷下來,這里就是為了觸發回調函數,如果沒有調試器附加,
那么debugbreak產生的異常會被AddVectoredExceptionHandler添加的回調函數捕獲來處理,這里添加的回調函數也就是
就這個函數,成為了捕捉異常的回調函數。。
當我用OD的時候,發現這個int 3直接被patch掉了,不會觸發異常回調函數,然后就直接return 0了。最后直接調用主函數外面的exit(0),直接跑0x7開頭的地址,跑飛了,然后就沒了。。這里用ida動調看看這個回調函數里面的東西。
再來動調看看這個數組值
然后看看緊接著輸入字符的運算與這個數組的關系
直接異或2即可,上代碼
兩部分使用下滑線連接起來為flag{r0b0RUlez!_w3lld0ne}
總結
以上是生活随笔為你收集整理的easy_Maze 梅津美治郎 寒假逆向生涯(16/100)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: babymips(下) 寒假逆向生涯(1
- 下一篇: OD软件断点原理