<< GDB | top | バッファオーバーフローを利用したクラック >>

スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク | - | | - | - |

main関数内でローカル変数を使う

今回はmain関数内で整数型変数を定義してアセンブリコードを見てみた。
 (gdb) list
1       #include <stdio.h>
2
3       int main(void)
4       {
5       int i = 256;
6       return 0;
7       }
(gdb) disassemble main
Dump of assembler code for function main:
0x08048344 <main+0>:    push   ebp
0x08048345 <main+1>:    mov    ebp,esp
0x08048347 <main+3>:    sub    esp,0x8
0x0804834a <main+6>:    and    esp,0xfffffff0
0x0804834d <main+9>:    mov    eax,0x0
0x08048352 <main+14>:   sub    esp,eax
0x08048354 <main+16>:   mov    DWORD PTR [ebp-4],0x100
0x0804835b <main+23>:   mov    eax,0x0
0x08048360 <main+28>:   leave  
0x08048361 <main+29>:   ret    
End of assembler dump.

予想通りになっている。

0x08048347 <main+3>:    sub    esp,0x8

でローカル変数用の領域を確保して、そこに

0x08048354 <main+16>:   mov    DWORD PTR [ebp-4],0x100

で変数を定義している。じゃあ、変数を増やしてみよう。

(gdb) list
1       #include <stdio.h>
2
3       int main(void)
4       {
5       int i = 256,j = 128,k = 64,l = 32,m = 16,n = 8,o = 4,p = 2,q = 1;
6       return 0;
7       }
(gdb) disassemble main
Dump of assembler code for function main:
0x08048344 <main+0>:    push   ebp
0x08048345 <main+1>:    mov    ebp,esp
0x08048347 <main+3>:    sub    esp,0x28
0x0804834a <main+6>:    and    esp,0xfffffff0
0x0804834d <main+9>:    mov    eax,0x0
0x08048352 <main+14>:   sub    esp,eax
0x08048354 <main+16>:   mov    DWORD PTR [ebp-4],0x100
0x0804835b <main+23>:   mov    DWORD PTR [ebp-8],0x80
0x08048362 <main+30>:   mov    DWORD PTR [ebp-12],0x40
0x08048369 <main+37>:   mov    DWORD PTR [ebp-16],0x20
0x08048370 <main+44>:   mov    DWORD PTR [ebp-20],0x10
0x08048377 <main+51>:   mov    DWORD PTR [ebp-24],0x8
0x0804837e <main+58>:   mov    DWORD PTR [ebp-28],0x4
0x08048385 <main+65>:   mov    DWORD PTR [ebp-32],0x2
0x0804838c <main+72>:   mov    DWORD PTR [ebp-36],0x1
0x08048393 <main+79>:   mov    eax,0x0
0x08048398 <main+84>:   leave  
0x08048399 <main+85>:   ret    
End of assembler dump.

あたりまえだけど、

0x08048347 <main+3>:    sub    esp,0x28

さっきと比べると確保する領域が大きくなっている。
ジャジャガッチ | アセンブリ言語 | 07:34 | comments(0) | trackbacks(0) |

スポンサーサイト

スポンサードリンク | - | 07:34 | - | - |
Comment









Trackback
URL:

07
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
PR
RECOMMEND
RECENT COMMENT
MOBILE
qrcode
OTHERS
Since 2013/09/17
LATEST ENTRY
CATEGORY
ARCHIVE
LINKS
PROFILE
SEARCH