Stack Smashing Protection (SSP) is an improvement over StackGuard. SSP was first implemented in gcc 4.1.
I would like to know how to disable Stack Guard on x86 Linux system?
-fno-stack-protector, SSP .
--disable-stackguard-randomization --enable-stackguard-randomization glibc.
/ , , , ?
, gcc. glibc 2.10, _dl_setup_stack_chk_guard. :
if (dl_random == NULL)
{
ret.bytes[sizeof (ret) - 1] = 255;
ret.bytes[sizeof (ret) - 2] = '\n';
}
else
{
memcpy (ret.bytes, dl_random, sizeof (ret));
ret.num &= ~(uintptr_t) 0xff;
}
dl_random AT_RANDOM, 16- , . , AT_RANDOM, dl_random == NULL , , 255 \n, . . AT_RANDOM , 7 AT_RANDOM. .
, , glibc.
@PeterCordes %%fs:0x28 (. ) main main.
SSP (ProPolice), , 'fstack-protector-all', ? Stack Guard ?
-fstack-protector SSP. , .
, - , , .
; readelf, . , , i386:
int read_canary()
{
int val = 0;
__asm__("movl %%gs:0x14, %0;"
: "=r"(val)
:
:);
return val;
}
x86_64:
long read_canary()
{
long val = 0;
__asm__("movq %%fs:0x28, %0;"
: "=r"(val)
:
:);
return val;
}