関数の入口でスタックの途中に 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 などでメモリをダンプしようとしたらそこで止まるように