攻防世界reverse高手进阶 ----- gametime
gfsj ----- gametime
昨天做了一道攻防世界的題key和這個(gè)gametime,都是動(dòng)態(tài)調(diào)試的題。key還稍微簡(jiǎn)單一些,gametime稍微費(fèi)點(diǎn)時(shí)間,記錄一下。
昨天晚上可能是沒(méi)進(jìn)入做題的狀態(tài)(瘋狂為自己找借口),動(dòng)態(tài)調(diào)試的時(shí)候稍微有點(diǎn)難受,就沒(méi)有做出來(lái),今天早上改完計(jì)網(wǎng)的題做了二十分鐘就出來(lái)了。還是要專注一點(diǎn)吶!
廢話不多說(shuō),看題。
先運(yùn)行一下題目給的程序
大致就是遇到s就按空格,遇到x按x,遇到m按m,前面都還按的挺順暢的,后面就快了,反應(yīng)不過(guò)來(lái),按錯(cuò)了就直接退出。甚至玩通關(guān)了之后出現(xiàn)了flag還沒(méi)來(lái)得及截圖就退出了,更不用說(shuō)復(fù)制了。
就動(dòng)態(tài)調(diào)試吧。
通過(guò)剛剛玩游戲發(fā)現(xiàn)程序有輸入的地方,那么我們猜測(cè)這個(gè)題的做法:F8的時(shí)候程序一定會(huì)在某個(gè)地方停住,下斷點(diǎn),重新載入,F9,在下斷點(diǎn)的地方按F7,進(jìn)入跟蹤,然后F8……,一直循環(huán),直到發(fā)現(xiàn)有用的函數(shù)。
程序載入OD,F8單步走,走到不能動(dòng)的地方,下斷點(diǎn)
重新載入,F9,然后F7進(jìn)入函數(shù)
然后一路F8,直到F8不能動(dòng),再下斷點(diǎn)
再重新載入,F9到下的第一個(gè)斷點(diǎn)處,現(xiàn)在我們可以把這里的斷點(diǎn)去掉了。然后F9到第二個(gè)斷點(diǎn)處。
重復(fù)上面的操作,直到程序出現(xiàn)…s
這里就是讓我們輸入了,看看匯編
我們?cè)谳斎肟蚰抢镙斎肟崭?#xff0c;OD里面就可以繼續(xù)F8了,再繼續(xù)走就是讓我們輸入x/m的測(cè)試了。就按照之前的做法繼續(xù)做……
之后就是正式的游戲環(huán)節(jié),我調(diào)試的時(shí)候在輸入空格、m、x的地方都下了斷點(diǎn)。我們輸入的時(shí)候可以發(fā)現(xiàn),匯編指令那里有個(gè)jnz指令,輸入的正確那么跳轉(zhuǎn)就成功,輸入的不正確就跳轉(zhuǎn)不成功,然后進(jìn)入一個(gè)提示失敗的指令,如下圖:
運(yùn)行到要輸入的時(shí)候就隨便輸也行,輸錯(cuò)了就改ZF標(biāo)志位,讓jnz跳轉(zhuǎn)成功,輸入大概五六個(gè)之后程序就會(huì)顯示flag
key is (no5c30416d6cf52638460377995c6a8cf5)
所以flag:no5c30416d6cf52638460377995c6a8cf5
總結(jié)
以上是生活随笔為你收集整理的攻防世界reverse高手进阶 ----- gametime的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 李宏毅 Attention
- 下一篇: java实现zip压缩