PEview
● Window 용 실행 파일인 PE( Portable Executable )의 구조를 분석할 수 있는 프로그램
● PE File Header의 내용을 볼 수 있고 여러 정보들을 얻을 수 있다.
리버싱
어떤 장치나 시스템 등의 구조, 기능, 동작을 분석하고 원리를 이해하여 단점을
보완하고 새로운 아이디어를 추가하는 작업
-- 분석 방법 --
정적 분석
● 실행 단계가 아닌 파일에 대한 여러 정보를 가지고 분석하는 방법
● 디스어셈블러를 통해 내부 코드와 구조를 확인하는 것도 포함
동적 분석
● 파일을 실행시킨 후 동작을 분석하는 방법
● 파일이 실행되면서 변화되는 여러 정보를 파악
● Debugger를 통해 프로그램 내부 동작 원리를 분석
-- Register 종류 --
EAX : 연산과 함수 반환 값에 사용되는 레지스터
EBX : ESI, EDI와 결합해 인덱스에 사용되는 레지스터
-> 인덱스 : 검색 속도를 높이기 위한 기술
ESI : 데이터 복사 작업, 조작 시 Source data address( 송신지 )가 저장되는 레지스터
EDI : 데이터 복사 작업 시 Destination address( 수신지 )가 저장되는 레지스터
ECX : Loop counter에 사용회는 레지스터
EDX : 부호확장에 사용되는 레지스터
EBP : 하나의 스택 프레임 시작 주소가 저장되는 레지스터
( 스택 프레임이 소멸되면 이전에 사용되던 스택 프레임을 가리킴 )
-- PE File Format --
종류 | 실행 | 라이브러리 | 드라이버 | 오브젝트 파일 |
확장자 | EXE, SCR | DLL, OCX, CPL, DRV | SYS, VXD | DBJ |
-- 구성 요소 --
PE Header
IMAGE_DOS_HEADER : DOS에서 윈도우용 PE 파일 실행 시 오류 메시지를 보여주고
실제 윈도우용 PE 헤더 위치를 가리킨다.
MS-DOS Stub Program : DOS에서 윈도우용 PE 파일 실행 시 출력해줄 오류 메시지를 저장하고 있다.
IMAGE_NT_HEADERS : 4bytes의 Signature와 IMAGE_FILE_HEADER, IMAGE_OPTIONAL_HEADER을 가짐
IMAGE_OPTIONAL_HEADER
Image Base : 메모리에 PE 파일이 저장되는 시작주소
Address of Entry Point : 프로그램 실행에 대한 제어권이 커널 영역에서 코드 영역으로 처음 넘어오는 주소인
Entry Point를 가리킨다.( Entry Point의 상대주소를 의미 )
-> Entry Point의 주소 구하기 : Image Base + Address of Entry Point의 값
Base of Code : 코드 영역이 시작되는 주소인 RVA를 가리킴
Section
.text : 프로그램 실행 코드 섹션
.data : 읽기/쓰기가 가능한 데이터 섹션( 전역변수, 정적변수가 위치 )
.rdata : 읽기 전용 데이터 섹션( 상수형 변수, 문자열 상수 위치 )
.bss : 초기화되지 않은 전역변수 위치
.idata : import할 DLL과 API 함수들에 대한 정보를 담고 있는 섹션( IAT )
-> IAT : 실행 파일에 어떤 라이브러리의 어떤 함수를 사용하는지 기록
.didat : 지연 로딩 import data를 위한 섹션
.edata : import할 DLL과 API 함수들에 대한 정보를 담고 있는 섹션
.rsrc : dialog, icon, cursor 등의 윈도우 어플리케이션 리소스 관련 데이터들을 담고 있는 섹션
.reloc : 실행 파일에 대한 기본 재배치 정보를 담고 있는 섹션
'툴 사용법' 카테고리의 다른 글
카페24 - 호스팅 구매 (0) | 2020.07.28 |
---|---|
OLLydbg (0) | 2019.09.01 |
BrowsingHistoryView (0) | 2019.08.18 |
Autoruns (0) | 2019.08.17 |
John the ripper (0) | 2019.08.04 |