목록Reversing (2)
ipwn
1. 함수의 호출 함수를 호출할때 스택에 어떻게 PUSH 하고 어떻게 POP할까? 함수 호출은 크게 다음과 같이 나눠진다. 1. 함수가 사용할 파라미터를 스택에 넣고 함수 시작지점으로 점프(함수 호출)한다.2. 함수 내에서 사용할 스택프레임을 설정한다. (프롤로그)3. 함수의 내용을 수행한다.4. 수행을 마치고 처음 호출한 지점으로 돌아가기 위해 스택을 복원한다(에필로그) 이 때 2번 과정을 프롤로그(Prolog) 라고 부르며, 4번 과정을 에필로그(epilog) 라고 부른다. 함수 프롤로그 베이스포인터(ebp)를 스택에 저장하고 현재 스택포인터(esp)를 베이스포인터(ebp)에다가 저장한다. push ebpmov ebp, esp 의 어셈블리어를 이용해 스택 프레임을 설정한다. 함수 에필로그 현재 스택 ..
MOV 명령어 어셈블리어에서 mov 명령어가 하는 역할은 간단하다. mov는 좌변에 우변(혹은 상수)의 값을 입력하는 것이다. mov eax, 1 (eax에 1을 덮어씌움) 이것은 C언어에서 int eax = 1 과 같은 의미이다. int eax = 1;eax = 2; 위의 코드를 수행하다면 변수 eax는 1을 담는 것이 아니라 2를 담고있을 것이다. 마찬가지로 mov eax, 1mov eax, 2 위의 명령을 수행하면 eax에 들어있는 값은 1이 아닌 2가 된다. mov 명령은 위의 예시처럼 레지스터에 1이라는 직접적인 값을 집어넣을 수 도 있지만 mov reg1, reg2 처럼 reg2에 있는 값을 reg1에 집어넣을 수도 있습니다. EX) mov eax, 1mov ebx, eax 결과 : eax ..