現在、Stripe による Capture-the-Flag イベントを行っています (まだ見ていない場合は、チェックしてください)。このイベントでは、逆アセンブルされた実行可能ファイルをよく見る必要があり、asm に関する私の知識はほとんどありません。
0x18
定数がある種の最小スタックサイズとして表示されるのを見続けています。たとえば、char[1024] 配列を割り当てて関数 strcpy() を呼び出す関数では、アセンブリは次のようになります。
8048484: 55 push %ebp
8048485: 89 e5 mov %esp,%ebp
8048487: 81 ec 18 04 00 00 sub $0x418,%esp
804848d: 8b 45 08 mov 0x8(%ebp),%eax
8048490: 89 44 24 04 mov %eax,0x4(%esp)
8048494: 8d 85 f8 fb ff ff lea -0x408(%ebp),%eax
804849a: 89 04 24 mov %eax,(%esp)
804849d: e8 e6 fe ff ff call 8048388 <strcpy@plt>
80484a2: c9 leave
80484a3: c3 ret
なぜ余分なスペースが必要なのですか?