포인터?
메모리의 주소를 가지고 있는 변수
변수와 메모리
변수의 크기에 따라 차지하는 메모리 공간이 달라진다
char형 변수는 1바이트 차지
int형 변수는 4바이트 차지
float형 변수는 4바이트 차지
주소연산자 &
C언어에서 변수의 주소를 계산하는 연산자
변수의 이름을 받아서 변수의 주소를 반환함.
포인터 선언
변수의 주소를 가지고 있는 변수
포인터 변수라는 말을 쓰는데
포인터 이름은 식별자 규칙을 따름.
배열의 이름 = 배열의 시작주소 = 포인터 상수
int *p --> p주소로 가면 int(정수)값이 들어가있음
char *pc --> pc주소로 가면 char(문자열)값이 ㅇ들어가 있음
int i = 10; // 정수형 변수 i 선언
int *p, // 포인터 변수 p 선언
p = &i; // 변수 i의 주소가 포인터 p로 대입
간접 참조 연산자
포인터가 가리키는 주소에 저장된 내용을 읽음
포인터를 통해 메모리에 접근
int i = 10;
int *p;
p=&i;
printf(%d ==%d\n", i, *p);
*p = 50;
printf("%d == %d\n", i, *p);
'System Hacking > Basics' 카테고리의 다른 글
pwndbg 명령어 다시 정리 (0) | 2025.04.03 |
---|---|
Return Oriented Programming / GOT overwrite (0) | 2025.04.03 |
Static Link vs Dynamic Link / PLT vs GOT (0) | 2025.03.20 |
NX 와 ASLR (0) | 2025.03.20 |
카나리(canary)개념/ 카나리 우회 실습[Dreamhack] Return to shellcode (0) | 2025.03.14 |