星期六, 4月 10, 2010

Smash Stack Disable

-fstack-protector Ubuntu下的GCC compile時預設啟動了此參數,如果想要測試一些stack overflow的程式會出現問題如下:

*** stack smashing detected ***: ./a.out terminated
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)[0xb7f5b6d8]
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x0)[0xb7f5b690]
./a.out[0x80484cf]
[0x78787878]
======= Memory map: ========
08048000-08049000 r-xp 00000000 08:01 5620003    /home/cacaegg/src/a.out
08049000-0804a000 r--p 00000000 08:01 5620003    /home/cacaegg/src/a.out
0804a000-0804b000 rw-p 00001000 08:01 5620003    /home/cacaegg/src/a.out

解決方法就是在compile時加上-fno-stack-protector就可以了。