Security/Reversing
[Reversing] 09. Process Explorer
1. Process Explorer Process Explorer : Windows 운영체제에서의 최고의 프로세스 관리 도구 Process Explorer - Windows Sysinternals 열려 있는 파일, 레지스트리 키 및 기타 개체 프로세스, 로드 된 Dll 등을 확인 하세요. docs.microsoft.com 화면 좌측 : 현재 실행 중인 프로세스들을 Parent/Child의 트리 구조로 표시해준다. 우측에는 프로세스 각각의 PID, CPU 점유율, 등록정보 등을 보여준다. 화면 아래(옵션)에는 선택된 프로세스에 로딩된 DLL 정보 또는 해당 프로세스에서 오픈한 object handle을 표시한다. 2. PE의 장점 Parent/Child 프로세스 트리 구조 프로세스 실행/종료 시 각각의 색..
[Reversing] 07. 스택 프레임
스택 프레임 스택 프레임이란 쉽게 말해 - ESP(스택 포인터)가 아닌 - EBP(베이스 포인터) 레지스터를 사용하여 스택 내의 로컬 변수, 파라미터, 복귀 주소에 접근하는 기법을 말한다. ESP레지스터의 값은 프로그램 안에서 수시로 변경되기 때문에 스택에 저장된 변수, 파라미터에 접근하고자 할 때 EPS 값을 기준으로 하면 프로그램을 만들기 힘들고, CPU가 정확한 위치를 참고할 때 어려움이 있다. 따라서 어떤 기준 시점(함수 시작)의 ESP값을 EBP에 저장하고 이를 함수 내에서 유지해주면, ESP 값이 아무리 변하더라도 EBP를 기준으로 안전하게 해당 함수의 변수, 파라미터, 복귀 주소에 접근할 수 있다. PUSH EBP ; 함수 시작(EBP를 사용하기 전에 기존의 값을 스택에 저장) MOV EBP..
[Reversing] 05. 스택
1. 스택 프로세스에서 스택 메모리의 역할은 아래와 같다. 함수 내의 로컬 변수 임시 저장 함수 호출 시 파라미터 전달 복귀 주소(return address) 저장 위와 같은 역할을 수행하기에는 스택의 FILO(First In Last Out) 구조가 아주 유용하다. 1.1 스택의 특징 일반적으로 스택 메모리는 그림과 같이 표현한다. 프로세스에서 스택 포인터(ESP)의 초기값은 Stack Bottom쪽에 가깝다. PUSH 명령어에 의해 Stack에 값이 추가되면 스택 포인터는 Stack Top을 향해(위쪽으로) 움직이고, POP 명령어에 의해 스택에서 값이 제거되면 스택 포인터는 Stack Bottom을 향해 (아래쪽으로) 움직인다. 즉 높은 주소에서 낮은 주소 방향으로 스택이 자라난다. 이러한 스택의 ..
[Reversing] 04. IA-32 Register 기본 설명
1. CPU 레지스터란? 레지스터란 CPU 내부에 존재하는 다목적 저장 공간이다. CPU가 RAM에 있는 데이터를 액세스하기 위해서는 물리적으로 먼 길을 돌아가야 하기 때문에 시간이 오래 걸린다. 하지만 레지스터는 CPU와 한 몸이기 때문에 고속으로 데이터를 처리할 수 있다. 1.1 레지스터에 대해 알아야 하는 이유 IA-32(Intel Architecture 32비트)에서 제공하는 어셈블리 명령어 어셈블리 명령어의 대부분은 레지스터를 조작하고 그 내용을 검사하기 떄문에 레지스터를 모르면 명령어 자체도 이해하기 힘들다. 2. IA-32의 레지스터 애플리케이션의 디버깅의 초급 단계에서는 Basic program executio register에 대해 알아두어야 한다. 2.1 Basic program exe..