PE File Format

:: Windows 운영체제에서 동작하는 실행 파일의 구성 방식

:: 실행 파일이 어떻게 구성되어야 하는지, 그 원칙을 정의해 놓은 것

:: Microsoft가 운영체제를 설계하는 과정에서 실행파일의 효율적이고 합리적인 구성을 고민하고 선택한 방식

:: 다양한 운영체제에서의 이식성을 보여준다는 뜻에서 이식이 가능한 실행형식(Portable Executable)이라는 이름이 붙음

 

PE 파일의 종류

ⓐ 실행 파일 계열 : EXE, SCR(Screen Saver)

ⓑ 라이브러리 계열 : DLL, OCX(Active X)

ⓒ 드라이브 계열 : SYS

ⓓ 오브젝트 파일 계열 : OBJ

 

PE 파일을 만들 떄, 일반적으로 Visual Studio와 같은 개발 도구를 사용한다.

(개발 도구 → 코드 작성 → 컴파일 → 실행 파일(exe)완성)

 

 

실행 파일을 만드는 과정은 어떻게 될까?

1. 코드와 데이터를 분리 (실행 코드 : .text 섹션에 기록 // 데이터 : .data 섹션에 기록)

2. 코드 → 기계어로 변환

3. 문자열 데이터 아스키 값으로 변환

4. 명령코드와 아스키 값을 담기 위한 생성 (PE File Format)

5. PE 헤더 작성 (PE헤더 : 파일 실행에 필요한 정보가 기록되어 있는 영역)

   --- 사용자가 작성한 값이 아니라, 코드를 컴파일하는 과정에서 컴파일러가 알아서 작성함

   --- 컴파일러가 PE 파일에 Header를 기록하는 이유 ? PE 파일을 만드는 것은 컴파일러지만, 실행 주체는 운영체제

                                                                       따라서 운영체제 입장에서 PE 파일을 실행하기 위해 필요한 정보를 담아줘야 함

6. 명령코드 채움 (.text 섹션 : 파일이 동작하는 데 필요한 코드가 기록되어 있는 영역)

7. 데이터 채움 (.data 섹션 : 파일이 실행될 때 필요한 부가적인 정보가 기록되어 있는 영역)

8. 실행 파일 완성!

 

 

 

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

main 함수 찾기  (0) 2021.03.23
OllyDBG, 어셈블리어  (0) 2021.02.04
IAT & EAT  (0) 2021.01.25
PE 헤더  (0) 2021.01.24
리버싱의 이해  (0) 2021.01.22

+ Recent posts