3. 지난 시간
컴퓨터 핵심 논리 구조 (폰노이만 구조)
“컴퓨터는 CPU와 MEMORY그리고 COMMON BUS로 구성되며”
메모리 안의 데이터(binary)를 처리하는 기계다
ALU
(계산하는 장치)
Control Unit
(데이터를 가져오는 장치)
010101011010
COMMON BUS
4. 지난 시간
컴퓨터 핵심 논리 구조 (폰노이만 구조)
메모리 안은 binary 데이터가 저장 되어 있다
명령어와 처리 데이터를 구분하지 않는다
CPU에서 데이터를 가져오기 위해 주소(Offset)정보를 이용함
5. 지난 시간
PE file format
컴퓨터의 다양한 요구사항에 맞춰진,
윈도우(운영체제)에서 사용하는 실행 파일 양식이다
실행에 필요한 정보와 처리 할 데이터가 들어있다.
compiler
source code
Excutable file
(PE file format)
6. 지난 시간
PE file format
윈도우에서 사용하는 실행 파일 양식이다
실행에 필요한 정보와 처리 할 데이터가 들어있다.
Hex editor로 본 Executable file
문서가 아닌 binary로 되어있다.
7. 지난 시간
PE file format 구성 요소
Excutable File
HEADER
SECTIONS
SECTIONS
SECTION
PE는 HEADER(실행에 필요한 정보) 와
SECTION(처리할 데이터)로 구성되어 있다.
8. 지난 시간
PE file format 구성 요소 - HEADER의 내부 구조
HEADER
IMAGE_DOS_HEADER
IMAGE_NT_HEADERS
IMAGE_OPTIONAL_HEADER
SECTION_TABLES
9. 지난 시간
PE Header들에게 얻을 수 있는 것들
● IMAGE_DOS_HEADER
○ IMAGE_NT_HEADER (PE 헤더) 의 시작 주소 값을 얻을 수 있다.
● IMAGE_NT_HEADERS
○ 실행 할 수 있는 CPU type과
section의 개수를 얻을 수 있다.
10. 지난 시간
PE Header들에게 얻을 수 있는 것들
● IMAGE_OPTIONAL_HEADER
○ 실행에 필요한 offset(주소 값)과 크기 그리고
실행에 필요한 함수(EXE) 와 제공하는 함수(DLL) 정보를 가지고
있다 (DATA_DIRECTORY)
● SECTION tables
○ 각 section의 offset과 크기
그리고 속성(읽기, 쓰기, 실행 등..)을 알 수 있다.
11. 지난 시간
참고 자료
● Low-Level Programming: C, Assembly, and Program Execution on Intel® 64
Architecture 1st ed. Edition - chapter 1. Basic computer Architecture
● Learning Malware Analysis: Explore the concepts, tools, and techniques to analyze and
investigate Windows malware
● An In-Depth Look into the Win32 Portable Executable File Format - Part 1
● An In-Depth Look into the Win32 Portable Executable File Format - Part 2
● http://www.openrce.org/reference_library/files/reference/PE%20Format.pdf
● https://github.com/corkami/pics/blob/master/binary/pe101/pe101ko.png
12. PE HEADER
Hex Editor로 분석하면 좋은 이유
● PE를 다루는 프로그램 개발 가능 (Peviewer,Debugger,packer … 등등)
○ Binary로 읽어 들여야 하기 때문에 Binary 분석에 익숙 해지기 위해서!
○ binary 분석이 재밌(?)어짐 - 친해지면 재밌고 신나잖아요?
16. PE HEADER
IMAGE_OPTIONAL_HEADER - DataDirectory[16]
0x60 DataDirectory[16]
DataDirectory 배열의 Element들은
각자 다른 구조체의 포인터와 그 구조체의 크기를 저장함
각 Element는 순서가 정해져 있음