I just compiled some C code that reads in input using gets and disassembled the code. The platform is Ubuntu 32-bit.There are these 3 lines that check if the canary value has been tampered with.   0x08048455 <+33>:    mov    edx,DWORD PTR [esp+0x7c]   0x08048459 <+37>:    xor    edx,DWORD PTR gs:0x14   0x08048460 <+44>:    je     0x8048467 <main+51>I set a breakpoint on 0x08048459 and saw that the gs register had the value 0x33.My questions are:What is gs:0x14 given that gs is 0x33? Is 0x33 an index to something? Is it a memory location of some sort?Are there any x86 instructions to move the value of gs to any other register? Or perhaps push it onto the stack?
Segmentation on x86 for stack canaries
x86;segmentation;stack