1

現在、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

なぜ余分なスペースが必要なのですか?

4

0 に答える 0