반응형
Total Theorem
1. ESP는 데이터가 들어가고 나갈 때마다 움직임.
- PUSH (데이터 들어감) - 스택의 끝자리에 데이터 저장시키고, ESP를 다음 칸으로 변경함.
- POP (데이터 나감) - 스택의 끝자리 데이터를 빼내고, ESP를 앞 칸으로 변경함.
2. EBP를 통해 지금 사용중인 스택의 기준점 잡음.
3. 루틴이 새롭게 호출되면, 스택 상에 기존에 사용된 루틴의 정보(RET,SFP)를 저장함.
- RET - 루틴이 끝나고 진행해야 하는 명령이 기억된 곳.
- SFP - 날 호출한 상위 루틴의 EBP(스택의 기준).
Memory
1. Memory 특징
- 한정적이다, '전원'이 들어오는 동안만 사용할 수 있다.
2. Memory 구조
CODE - fix
DATA - fix
HEAP - variable
STACK - variable
Stack
- 함수/어떤 루틴이 돌아갈 때 사용되는 영역.
- LIFO(last in first out) 방식으로 데이터를 넣고 뺀다. (=FILO)
Register
1. EIP (Extended Instruction Pointer) : CPU한테 다음 '할 일' 알려줌.
- '할 일'이란? = CODE address
- CPU는 계산밖에 모르는 순진한 바보이다. CPU는 아묻따 EIP가 알려주는 메모리 주소에 있는 일을 가져다 실행한다. CPU가 그 일을 하는동안, EIP는 +1된다.. → 다음 할 일을 알려준다.
- (cpu 안에는 많은 register들이 있다. 아래는 cpu안의 rigister이다.)
2. EBP (Extended Base Pointer) : 지금 사용 중인 stack의 시작 지점.(기준)
3. ESP (Extended Stack Pointer) : 지금까지 사용한 stack의 마지막 지점.
Function
- 프로그램 실행 → 시작함수 호출
- 시작함수는 RET와 SFP를 stack에 저장시켜 놓는다.
(2019.12에 작성한 글을 가져왔습니다.)
반응형
'Pwnable > FTZ' 카테고리의 다른 글
[FTZ] Level 4 풀이 <Backdoor> (1) | 2024.01.18 |
---|---|
[FTZ] Level 3 풀이 <다중 명령어> (0) | 2024.01.18 |
[Linux] 프로세스 확인 & 죽이기 (0) | 2024.01.17 |
[FTZ] Level 2 풀이 <쉘 명령어> (0) | 2021.08.14 |
[FTZ] Level 1 풀이 <SetUID> (0) | 2021.08.14 |