最近學(xué)習(xí)CSAPP,做到對(duì)應(yīng)實(shí)驗(yàn)bomblab了,記錄一下拆彈過(guò)程。
https://github.com/EugeneLiu/translationCSAPP 課程相關(guān)地址
bomblab是需要通過(guò)反匯編來(lái)找線(xiàn)索的實(shí)驗(yàn),總共有6條線(xiàn)索要找,因?yàn)椴粫?huì)用gdb所以花了一些時(shí)間去學(xué)了gdb的使用,現(xiàn)在先做一個(gè)1實(shí)驗(yàn)試試水。

實(shí)驗(yàn)文件
首先進(jìn)來(lái)當(dāng)然是先list看看源代碼行不行


雖然這里看不出什么直接的線(xiàn)索,但是可以看出來(lái)6個(gè)線(xiàn)索應(yīng)該分別對(duì)應(yīng)phase_1~phase_6,應(yīng)該只需要在這幾個(gè)函數(shù)內(nèi)部做文章就可以。那么這次先從1開(kāi)始
反匯編一下phase_1函數(shù)看看

哦豁,看起來(lái)就是幾個(gè)寄存器比較了下值,那不出意外答案應(yīng)該就在這幾個(gè)寄存器里,先打個(gè)斷點(diǎn)運(yùn)行看看:

123456就隨便輸了先
感覺(jué)中獎(jiǎng)了,esi里的這句話(huà)應(yīng)該就是答案了。
既然rax是我輸入的值,我就先試試能不能直接把這串字符串復(fù)制到rax里

看上去好像不行
不行就算了,那就從頭運(yùn)行里輸入唄

確實(shí)1線(xiàn)索就這么找到通過(guò)了,有空再繼續(xù)做后續(xù)的2——6拆彈。先記錄到這。