関数の入口でスタックの途中に canary を挿入して
関数の出口で canary が変わってたら自殺してくれる
説明 | サイズ | 値 |
---|---|---|
buf | 64 bytes | ??? |
canary | 4 bytes | 0x??????00 |
すきま | 8 bytes | ??? |
前のスタックフレーム | 4 bytes | 0xffffd4?? |
呼び出し元アドレス | 4 bytes | 0x804841b |
fooの引数 | 0 bytes | N/A |
canary は 0x??????00 な値で、プログラム起動時に適当に作ってある
(乱数は AT_RANDOM という auxv で kernel が渡してくる)
末尾が 0x00 なのは、 printf などでメモリをダンプしようとしたらそこで止まるように