2017. 10. 25. 19:47ㆍSystemHacking/Assembly
[root@EH 3797]# cat maps
00000000-08048000 사용하지 않는 메모리 주소
08048000-08049000 r-xp 00000000 03:01 425373 /root/a.out : 1000 , 4096byte ,4K: text section
- 코드가 위치하는 주소
08049000-0804a000 rw-p 00000000 03:01 425373 /root/a.out : 1000 , 4096buyr ,4K: data section( data,bss,heap )
- 전역변수, 힙 공간 등의 주소
08xxxxxx ~ 40xxxxxx : HEAP 영역을 위한 예약된 영역
40xxxxxx : 공유라이브러리영역
40000000-40013000 r-xp 00000000 03:01 310116 /lib/ld-2.1.3.so : ld text section
40013000-40014000 rw-p 00012000 03:01 310116 /lib/ld-2.1.3.so : ld data section
40014000-40016000 rw-p 00000000 00:00 0
4001c000-40109000 r-xp 00000000 03:01 310123 /lib/libc-2.1.3.so : libc text section
40109000-4010d000 rw-p 000ec000 03:01 310123 /lib/libc-2.1.3.so : libc data section
4010d000-40111000 rw-p 00000000 00:00 0
40111000-bfffe000 : Stack메모리를 위한 영역 ( 여유공간을 줌 )
bfffe000-c0000000 rwxp fffff000 00:00 0 : Stack메모리 ( bfffe000 ~ bfffffff )
- 지역변수의 주소 및 함수의 정보가 존재
c0000000~ ffffffff : Kernel 이 사용하는 메모리
#include <stdio.h> int global; int main(){ char *ptr = NULL; int a; int b; int c; printf("%s %s\n","Hello,","World!!!"); printf("Code Section: 0x%08x \n", &main ); printf("Data Section: 0x%08x \n", &global ); ptr = (char*)malloc( 100 ); printf("First Heap Data Section: 0x%08x \n", ptr ); ptr = (char*)malloc( 100 ); printf("Second Heap Data Section: 0x%08x \n", ptr ); ptr = (char*)malloc( 100 ); printf("Third Heap Data Section: 0x%08x \n", ptr ); printf("Stack Memory_1: 0x%08x \n", &ptr ); printf("Stack Memory_2: 0x%08x \n", &a ); printf("Stack Memory_3: 0x%08x \n", &b ); printf("Stack Memory_4: 0x%08x \n", &c ); return 0; } |
[root@EH /root]# ./a.out Hello, World!!! Code Section: 0x08048400 // text section Data Section: 0x080497e4 // data section // 힙 영역 First Heap Data Section: 0x080497f0 Second Heap Data Section: 0x08049858 Third Heap Data Section: 0x080498c0 // 스택 영역 Stack Memory_1: 0xbffffb54 Stack Memory_2: 0xbffffb50 Stack Memory_3: 0xbffffb4c Stack Memory_4: 0xbffffb48
|
'SystemHacking > Assembly' 카테고리의 다른 글
[10] 어셈블리 스택메모리를 이용한 변수 저장 및 사용 (0) | 2017.10.27 |
---|---|
[9] 어셈블리 스택 메모리를 이용한 간단한 덧셈 ( leave, ret, call ) (0) | 2017.10.27 |
[8] 어셈블리 반복문 연습 (0) | 2017.10.24 |
[7] 어셈블리 분기문 ( if, switch ) +cmp, jmp (1) | 2017.10.23 |
[6] 어셈블리 비트연산 ( shift, and, or, not ) (0) | 2017.10.20 |