分析過(guò)程
1移必、首先室谚,將文件放入IDA,發(fā)現(xiàn)是elf類型文件
2崔泵、字符串定位秒赤,View -> OpenSubviews->Strings(快捷鍵:Shift+F12),發(fā)現(xiàn)flag字樣憎瘸。
3入篮、雙擊 Printing flag,發(fā)現(xiàn)XREF交叉引用,繼續(xù)雙擊XREF幌甘,向前追蹤潮售,發(fā)現(xiàn)0x0804849b為該函數(shù)起始地址。
4锅风、在linux下運(yùn)行程序酥诽,發(fā)現(xiàn)無(wú)任何顯示,可設(shè)置斷點(diǎn) b __libc_start_main皱埠;按 r 運(yùn)行肮帐;
程序啟動(dòng)的過(guò)程應(yīng)該是這樣的:
_start -> __libc_start_main -> main. 具體一點(diǎn)就是:
_start -> __libc_start_main -> __libc_csu_init -> main. 再具體一點(diǎn)就是:
_start -> __libc_start_main ->?__libc_csu_init?-> _init -> main -> _fini.
官方點(diǎn)的解釋:__libc_start_main sets up the environment and then calls the main() function when the binary is run.
5、停在斷點(diǎn)處后边器,設(shè)置eip為前面發(fā)現(xiàn)的函數(shù)地址:set $eip=0x0804849b,繼續(xù)運(yùn)行训枢,發(fā)現(xiàn)flag。