본문 바로가기

툴 사용법

PEview

728x90

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