從最簡單的開始來,先查一下殼,發(fā)現(xiàn)沒有殼

OD打開程序,先運(yùn)行,彈出信息框不用關(guān),切換到OD界面按F12暫停程序,然后Alt+k,百度一下msvbvm50 user32發(fā)現(xiàn)是vb程序找到兩個(gè)信息框,一個(gè)在00401EA9,一個(gè)在740CEE19,程序入口是00401000,00401EA9離得比較近,應(yīng)該就是這個(gè)彈框了,右鍵顯示調(diào)用(show call)

附近發(fā)現(xiàn)彈出眼熟的字樣

再往上查查發(fā)現(xiàn)successful字樣

在00401D9D處發(fā)現(xiàn)關(guān)鍵je跳轉(zhuǎn),直接nop掉發(fā)現(xiàn)成功

但是ctf中我們需要的是找到正確的注冊(cè)碼算法,繼續(xù)分析,重新加載程序,往上找retn的時(shí)候發(fā)現(xiàn)入口點(diǎn)

下斷點(diǎn)F8單步步過,

首次發(fā)現(xiàn)輸入的數(shù)據(jù)? 123456 在00401D70處出現(xiàn),ecx=123456,放入棧中,接著放入SynTax 2oo1,接下來是一個(gè)call,名字里有strcmp,應(yīng)該是比較函數(shù),結(jié)果放到eax中,eax=-1,應(yīng)該SynTax 2oo1就是注冊(cè)碼了,輸入SynTax 2oo1后再看此處的eax就變?yōu)?了,發(fā)現(xiàn)正確