System Hacking
STAGE 2 : Background - Computer Science (1/3)
Linuux Memory Layout 퀴즈 풀이
Quiz 1.
e는 어느 세그먼트의 데이터를 가리키는가?
#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
int d = 0xd;
return 0;
}
int main()
{
int *e = malloc(sizeof(*e));
return 0;
}
A 데이터
B 힙 ✔️
C 스택
D 읽기 전용 데이터 (rodata)
E 코드
F BSS
풀이: e는 malloc()을 호출하여 메모리를 동적 할당 받았으므로 힙 세그먼트에 위치한다.
Quiz 2.
a가 위치하는 세그먼트는 어디인가?
#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
int d = 0xd;
return 0;
}
int main()
{
int *e = malloc(sizeof(*e));
return 0;
}
A 스택
B 데이터 ✔️
C 읽기 전용 데이터 (rodata)
D 코드
E BSS
F 힙
풀이: a는 컴파일 시점에 값이 정해진 전역 변수이므로 데이터 세그먼트에 위치한다.
Quiz 3.
d가 위치하는 세그먼트는 어디인가?
#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
int d = 0xd;
return 0;
}
int main()
{
int *e = malloc(sizeof(*e));
return 0;
}
A 힙
B 코드
C 데이터
D 읽기 전용 데이터 (rodata)
E 스택 ✔️
F BSS
풀이: d는 foo 함수의 지역 변수이므로 스택 세그먼트에 저장된다.
Quiz 4.
b가 위치하는 세그먼트는 어디인가?
#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
int d = 0xd;
return 0;
}
int main()
{
int *e = malloc(sizeof(*e));
return 0;
}
A 힙
B 코드
C 데이터
D 읽기 전용 데이터 (rodata) ✔️
E 스택
F BSS
풀이: b는 const로 상수화 하여 값을 변하지 않게 선언해줬기 때문에 rodata (read-only-data) 세그먼트에 위치한다.
Quiz 5.
foo가 위치하는 세그먼트는 어디인가?
#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
int d = 0xd;
return 0;
}
int main()
{
int *e = malloc(sizeof(*e));
return 0;
}
A 스택
B 힙
C 데이터
D 코드 ✔️
E BSS
F 읽기 전용 데이터 (rodata)
풀이: foo는 함수이므로 코드 세그먼트에 위치한다.
Quiz 6.
"d_str"이 위치하는 세그먼트는 어디인가?
#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
int d = 0xd;
return 0;
}
int main()
{
int *e = malloc(sizeof(*e));
return 0;
}
A 힙
B 데이터
C BSS
D 읽기 전용 데이터 (rodata) ✔️
E 코드
F 스택
풀이: "d_str"은 상수화 된 값이 변하면 안되는 데이터이므로 rodata 세그먼트에 위치한다.
Quiz 7.
c가 위치하는 세그먼트는 어디인가?
#include <stdlib.h>
int a = 0xa;
const char b[] = "d_str";
int c;
int foo(int arg) {
int d = 0xd;
return 0;
}
int main()
{
int *e = malloc(sizeof(*e));
return 0;
}
A 읽기 전용 데이터 (rodata)
B 힙
C 스택
D 코드
E BSS ✔️
F 데이터
풀이: c는 컴파일 시점에 값이 정해지지 않은, 선언만 하고 초기화하지 않은 전역 변수이므로 BSS 세그먼트에 위치한다.
'동아리 활동' 카테고리의 다른 글
System Hacking : x86 어셈블리 (2) (0) | 2023.05.01 |
---|---|
System Hacking : x86 어셈블리 (1) (0) | 2023.05.01 |
System Hacking : 컴퓨터 아키텍처 Quiz 풀이 (0) | 2023.04.29 |
System Hacking : 컴퓨터 아키텍처 (0) | 2023.04.28 |
System Hacking : 리눅스 메모리 레이아웃 (0) | 2023.04.26 |