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