1부 05~07장

Posted by dw0rdptr
2015. 3. 16. 17:48 Study/Reversing&System Hacking

05장 - 스택

프로세스에서 스택 메모리의 역할

1) 함수 내의 로컬 변수 임시 저장

2) 함수 호출 시 파라미터 전달

3) 복귀 주소(retrun address) 저장


스택의 특징


&스택 구조

프로세스에서 스택 포인터(ESP)의 초기값은 Stack Bottom쪽에 가깝다. PUSH 명령에 의해서 Stack에 값이 추가되면 ESP는 Stack Top을 향해 움직인다 . POP 명령에 의해 스택에서 값이 제거되면 스택 포인터는 Stack Bottom을 향해 줄어든다.

* 실제 메모리상에서는 높은주소에서 낮은주소로 스택이 자람 즉, Stack Bottom이 메모리상의 높은 주소, Stack Top이 메모리상의 낮은 주소


06장 - abex' crackme #1 분석


명령어

 설명

 PUSH

 스택에 값을 입력

 INC

 값을 1 증가

 DEC

 값을 1 감소

 JMP

 지정된 주소로 점프

 CMP

 주어진 두개의 operand 비교        * SUB 명령어와 동일하나 operand값이 변경되지 않고  EFLAGS 레지스터만 변경됨 (두 operand의 값이 동일하다면 SUB 결과는 0, ZF=1)

 JE

 조건 분기(Jump if equal)    * ZF = 1이면 점프

 CALL

 지정된 주소의 함수를 호출


스택에 파라미터를 전달하는 방법

함수를 호출하기 전에 PUSH 명령어를 사용하여 파라미터를 입력할 때 역순으로 입력하는데, 이는 스택이 FILO(First In Last Out) 구조이기 때문에 파라미터를 역순으로 넣어주면 받는 함수에서 올바른 순서로 꺼낼 수있다.


07장 - 스택 프레임

스택 프레임

EBP 레지스터를 사용하여 스택 내의 로컬 변수, 파라미터, 복귀 주소에 접근하는 기법을 말한다. 어떤 기준 시점(함수 시작)의 ESP값을 EBP에저장하고 이를 함수 내에서 유지해주면 ESP 값이 변하더라도 EBP를 기준으로 안전하게 해당 함수의 변수, 파라미터, 복귀 주소에 접근 할 수 있다.



'Study > Reversing&System Hacking' 카테고리의 다른 글

pwnable.tw start  (0) 2017.08.27
1부 01~04장  (0) 2015.03.16