分析过程
1、首先,将文件放入IDA,发现是elf类型文件
2、字符串定位,View -> OpenSubviews->Strings(快捷键:Shift+F12),发现flag字样。
3、双击 Printing flag,发现XREF交叉引用,继续双击XREF,向前追踪,发现0x0804849b为该函数起始地址。
4、在linux下运行程序,发现无任何显示,可设置断点 b __libc_start_main;按 r 运行;
程序启动的过程应该是这样的:
_start -> __libc_start_main -> main. 具体一点就是:
_start -> __libc_start_main -> __libc_csu_init -> main. 再具体一点就是:
_start -> __libc_start_main -> __libc_csu_init -> _init -> main -> _fini.
官方点的解释:__libc_start_main sets up the environment and then calls the main() function when the binary is run.
5、停在断点处后,设置eip为前面发现的函数地址:set $eip=0x0804849b,继续运行,发现flag。