목 차 1. 개요 2. PE(Portable Executable) 이란? 3. IMAGE_DOS_HEADER 4. IMAGE_NT_HEADER 1) IMAGE_FILE_HEADER 2) IMAGE_OPTIONAL_HEADER 3) IMAGE_DATA_DIRECTORY

Similar documents
<4D F736F F D20B0ADB5BFC7F65FB1E2BCFAB9AEBCAD5F4645B1B8C1B620B1E2BCFAB9AEBCAD5F66726F6D E6B5F66696E F2E646F63>

Deok9_PE Structure

Microsoft Word - PE_structure.docx

연재순서 실행파읷속으로 필자소개 싞영짂 웰비아닶컴에서보안프로그래머로읷하고있다. 시스템프로그래밍에관심이많으며다수의 PC 보안프로그램개발에참여했다. 현재데브피아 Visual C++ 섹션시

Win32 실행파일 (PE) 의구조 Windows 운영체제실행파일의구조에대하여알아보자 Kali-KM

< C6520B1B8C1B6BFCD20BEF0C6D0C5B7C0C720BFF8B8AE2E687770>

목차 ⓵ VA and RVA 4p. ⓶ RVA to RAW 5p. ⓷ PE 7p. PE의개념. PE Header가생기는과정. PE의필요성. ⓷ DOS Header 8p. e_magic e_lfanew ⓸ DOS Stub 9p. 1

악성코드분석을위한 실행압축 해제기법 1. 개요 이제목을보고 실행압축이뭐야? 하는이도있을테고, 실행하면자동으로압축이풀리는 ZIP 파일과비슷한거아냐? 하고떠올리는이도있을것이다. 그러나여기서설명하는실행압축은그대상이다르다. 흔히말하는 ZIP, RAR처럼데이터들을하나로묶어놓는압

Microsoft Word - 과목1.Reverse Engineering.doc

(Microsoft Word - ASEC Report 2007\263\3425\277\371\310\243.doc)

Microsoft Word - PE Infection ? How to Inject a dll.doc

Microsoft PowerPoint - a10.ppt [호환 모드]

PowerPoint Presentation

Microsoft PowerPoint - o8.pptx

SRC PLUS 제어기 MANUAL

슬라이드 1

Scalable Network-based Buffer Overflow Attack Detection

Deok9_Exploit Technique

hlogin7

No Slide Title

BMP 파일 처리

컴파일러

윈도우프로그래머를위한 PE 포맷가이드 실행파일프로텍터 목차 목차... 1 저작권... 1 소개... 1 연재가이드... 1 연재순서... 1 필자소개... 2 필자메모... 2 Introduction... 2 IAT 처리하기... 4 메타데이터 스텁코드...

Dialog Box 실행파일을 Web에 포함시키는 방법

PowerPoint 프레젠테이션

05Àå

기초지식 : C/C++, Win32 API, Assembly 응용분야 : 보안프로그램 연재순서 실행파일속으로 DLL 로딩하기 실행파일생성기의원리 코드패칭 바이러스 필자소개 싞영짂 po

제20회_해킹방지워크샵_(이재석)

Introduce

105È£4fš

chap 5: Trees

Microsoft PowerPoint - [#4-2] File System Forensic Analysis.pptx

PowerPoint 프레젠테이션

歯MW-1000AP_Manual_Kor_HJS.PDF

디지털영상처리3

PRO1_02E [읽기 전용]

Chapter 4. LISTS

강의10

2014밝고고운동요부르기-수정3

2005프로그램표지

CD-RW_Advanced.PDF

슬라이드 1

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

#KM-235(110222)

1. 개요 악성코드는여러분류로나누어볼수가있다. 이중일반사용자의입장에서 악성코드 라는단어보다친숙한 바이러스 가있다. 사실필자도보안을공부하기이전에는 악성코드 라는단어는아예들어보지못했고, 대신 바이러스 라는단어로모든악성코드를지칭했었다. 바이러스는악성코드분류의한종류로 스스로를

Microsoft Word doc

PRO1_09E [읽기 전용]

Sena Device Server Serial/IP TM Version

슬라이드 1

슬라이드 1

슬라이드 1

SMB_ICMP_UDP(huichang).PDF

³»Áö¼öÁ¤

1. GigE Camera Interface를 위한 최소 PC 사양 CPU : Intel Core 2 Duo, 2.4GHz이상 RAM : 2GB 이상 LANcard : Intel PRO/1000xT 이상 VGA : PCI x 16, VRAM DDR2 RAM 256MB

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

DBPIA-NURIMEDIA

hlogin2

제목을 입력하세요.

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

1217 WebTrafMon II

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

#KM560

IDA 5.x Manual hwp

FD¾ØÅÍÇÁ¶óÀÌÁî(Àå¹Ù²Þ)-ÀÛ¾÷Áß

Microsoft PowerPoint - chap11-포인터의활용.pptx

연재순서 실행파일속으로 DLL 로딩하기 실행파일생성기의원리 코드패칭 바이러스 런타임코드생성및변형 필자소개 싞영짂

#DPK5(PB)(9.8.19)

MAX+plus II Getting Started - 무작정따라하기

[ 네트워크 1] 3 주차 1 차시. IPv4 주소클래스 3 주차 1 차시 IPv4 주소클래스 학습목표 1. IP 헤더필드의구성을파악하고요약하여설명할수있다. 2. Subnet ID 및 Subnet Mask 를설명할수있고, 각클래스의사용가능한호스트수와사설 IP 주소및네트

03_queue

The_IDA_Pro_Book

PCServerMgmt7

CPX-E-SYS_BES_C_ _ k1

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

KISA-GD

TTA Verified : HomeGateway :, : (NEtwork Testing Team)

#KLZ-371(PB)

vm-웨어-앞부속

Chap7.PDF

Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

chapter1,2.doc

rmi_박준용_final.PDF

PowerPoint Presentation

API 매뉴얼

슬라이드 제목 없음

PowerPoint Presentation

untitled

ms dos virus analysyst

초보자를 위한 C# 21일 완성

MasoJava4_Dongbin.PDF

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

PowerPoint 프레젠테이션

Microsoft Word - KPMC-400,401 SW 사용 설명서

유저영역후킹탐지시스템 팀 명 : D.N.F (Do Not Fishing) 지도교수 : 유승재교수님 팀 장 : 신동순 팀 원 : 서현찬이치목 중부대학교정보보호학과

No Slide Title

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Transcription:

작성자 : 한서대학교 H.I.S.L 동아리진선호 sunho104@msn.com 본보고서의전부나일부를인용시반드시 [ 자료 : 한서대학교정보보호동아리 (H.I.S.L)] 를명시하여주시기바랍니다. - 1 -

목 차 1. 개요 2. PE(Portable Executable) 이란? 3. IMAGE_DOS_HEADER 4. IMAGE_NT_HEADER 1) IMAGE_FILE_HEADER 2) IMAGE_OPTIONAL_HEADER 3) IMAGE_DATA_DIRECTORY 5. Import Table 6. Export Table 7. IMAGE_SECTION_HEADER 8. 맺음말 - 2 -

- 3 -

M Z DOS 시그너처 PE 위치 IMAGE_DOS_HEADER 및도스호환데이터 DOS 호환데이터 P E \0 \0 COFF 헤더 IMAGE_NT_HEAER 옵션헤더 섹션테이블 IMAGE_SECTION_HEADER 섹션 #1 섹션 #2 SECTION 데이터... - 4 -

M Z <- DOS 시그너처 IMAGE_DOS_HEADER PE 포맷시작오프셋-> PE위치 DOS Stub Code "This program cannot be run in DOS mode" PE signature IMAGE_DOS_HEADER 및도스호환데이터 (64byte) IMAGE_NT_HEAER - 5 -

typedef struct_image_dos_header{ // DOS.EXE header WORD e_magic; // Magic number (MZ) WORD e_cblp; // Bytes on last page of file WORD e_cp; // Pages in file WORD e_crlc; // Relocations WORD e_cparhdr; // Size of header in paragraphs WORD e_minalloc; // Minimum extra paragraphs needed WORD e_maxalloc; // Maximum extra paragraphs needed WORD e_ss; // Initial (relative) SS value WORD e_sp; // Initial SP value WORD e_csum; // Checksum WORD e_ip; // Initial IP value WORD e_cs; // Initial (relative) CS value WORD e_lfarlc; // File address of relocation table WORD e_ovno; // Overlay number WORD e_res[4]; // Reserved words WORD e_oemid; // OEM identifier (for e_oeminfo) WORD e_oeminfo; // OEM information; e_oemid specific WORD e_res2[10]; // Resverved words WORD e_lfanew; // File address of new exe header (PE) } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; - 6 -

typedef struct_image_file_header{ WORD WORD DWORD DWORD DWORD WORD Machine; NumberOfSections; TimeDateStamp; PointerToSymbolTable; NumberOfSymbols;; SizeOfOptionalHeader; // 타겟머신타입 ( 예 Intel 의 80386) // 파일에포함된섹션수 // 파일제작일시 // 심볼테이블오프셋 // 심볼테이블의엔트리수 // 옵션헤더의크기 WORD Characteristics; // 파일속성플래그 } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; - 7 -

typedef struct _IMAGE_OPTIONAL_HEADER { // Standard fields. WORD Magic; BYTE MajorLinkerVersion; BYTE MinorLinkerVersion; DWORD SizeOfCode; DWORD SizeOfInitializedData; DWORD SizeOfUninitializedData; DWORD AddressOfEntryPoint; DWORD BaseOfCode; DWORD BaseOfData; // 기본필드 // OPTIONAL 시그니처 // 링커버전 // 링커버전 // 코드섹션들의사이즈의합 // 코드섹션제외초기화된사이즈 // 초기화안된데이터섹션의크기 // 엔트리포인트 RVA // 코드섹션 RVA // 데이터섹션 RVA // NT additional fields. DWORD ImageBase; // 이미지베이스 DWORD SectionAlignment; // 메모리페이지크기 (4K) DWORD FileAlignment; // 섹션들의정렬단위 WORD MajorOperatingSystemVersion; // 운영체제최소버전 WORD MinorOperatingSystemVersion; // 운영체제최소버전 WORD MajorImageVersion; // 유저정의파일버전 WORD MinorImageVersion; // 유저정의파일버전 WORD MajorSubsystemVersion; // 서브시스템의최소버전 WORD MinorSubsystemVersion; // 서브시스템의최소버전 DWORD Win32VersionValue; // ( 사용 ) DWORD SizeOfImage; // 메모리상의 PE 파일의총사이즈 DWORD SizeOfHeaders; // 디스크상에서의헤더의총사이즈 DWORD CheckSum; // 체크섬값 WORD Subsystem; // 서브시스템 WORD DllCharacteristics; // DLL 초기화함수 ( 현재사용 ) DWORD SizeOfStackReserve; // 스택예약크기 DWORD SizeOfStackCommit; // 스택초기수용크기 DWORD SizeOfHeapReserve; // 기본힙예약크기 DWORD SizeOfHeapCommit; // 기본힙초기수용크기 DWORD LoaderFlags; // ( 사용 ) DWORD NumberOfRvaAndSizes; // DIRECTORY 배열의원소개수 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; } IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32; - 8 -

- 9 -

typedef struct _IMAGE_DATA_DIRECTORY { DWORD DWORD VirtualAddress; Size; } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; // Directory Entries #define IMAGE_DIRECTORY_ENTRY_EXPORT #define IMAGE_DIRECTORY_ENTRY_IMPORT #define IMAGE_DIRECTORY_ENTRY_RESOURCE #define IMAGE_DIRECTORY_ENTRY_EXCEPTION #define IMAGE_DIRECTORY_ENTRY_SECURITY #define IMAGE_DIRECTORY_ENTRY_BASERELOC #define IMAGE_DIRECTORY_ENTRY_DEBUG #define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE #define IMAGE_DIRECTORY_ENTRY_GLOBALPTR #define IMAGE_DIRECTORY_ENTRY_TLS #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT #define IMAGE_DIRECTORY_ENTRY_IAT #define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT #define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // Export Directory // Import Directory // Resource Directory // Exception Directory // Security Directory // Base Relocation Table // Debug Directory // Architecture // Specific Data // RVA of GP // TLS Directory // Load Configuration // Directory // Bound Import Directory // in headers // Import Address Table // Delay Load Import // Descriptors // COM Runtime descriptor - 10 -

- 11 -

IMPORT TABLE OriginalFistThunk <- ILT #1 TimeDateStamp IMAGE_IMPORT _DESCRIPTOR ForwarderChain Name FirstThunk <- IAT #1 OriginalFistThunk <- ILT #2 TimeDateStamp IMAGE_IMPORT _DESCRIPTOR ForwarderChain Name FirstThunk <- IAT #2 NULL - 12 -

typedef struct _IMAGE_IMPORT_DESCRIPTOR { union { DWORD Characteristics; DWORD OriginalFirstThunk; }; DWORD TimeDateStamp; DWORD ForwarderChain; DWORD Name; DWORD FirstThunk; } IMAGE_IMPORT_DESCRIPTOR; typedef struct _IMAGE_THUNK_DATA32 { union { PBYTE ForwarderString; PDWORD Function; DWORD Ordinal; PIMAGE_IMPORT_BY_NAME AddressOfData; } u1; } IMAGE_THUNK_DATA32; - 13 -

EXPORT TABLE Name Base NumberOfFuntions IMAGE_DIRECTORY _ENTRY_EXPORT NumberOfNames AddressOfFunctions AddressOfNames AddressOfNameOrdinals... Name Base NumberOfFuntions IMAGE_DIRECTORY _ENTRY_EXPORT NumberOfNames AddressOfFunctions AddressOfNames AddressOfNameOrdinals... - 14 -

typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; DWORD TimeDateStamp; WORD MajorVersion; WORD MinorVersion; DWORD Name; DWORD Base; DWORD NumberOfFunctions; DWORD NumberOfNames; DWORD AddressOfFunctions; // RVA from base of image DWORD AddressOfNames; // RVA from base of image DWORD AddressOfNameOrdinals; // RVA from base of image } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY; - 15 -

Section Table Name VirtualAddress Section #1 SizeOfRawData PointerToRawData Characteristics Name VirtualAddress Section #2 SizeOfRawData PointerToRawData Characteristics...... Section #n... - 16 -

#define IMAGE_SIZEOF_SHORT_NAME 8 typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; union { DWORD PhysicalAddress; DWORD VirtualSize; } Misc; DWORD VirtualAddress; DWORD SizeOfRawData; DWORD PointerToRawData; DWORD PointerToRelocations; DWORD PointerToLinenumbers; WORD NumberOfRelocations; WORD NumberOfLinenumbers; DWORD Characteristics; } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; #define IMAGE_SIZEOF_SECTION_HEADER 40-17 -

- 18 -

참고서적 1. Windows 시스템실행파일의구조와원리 - 한빛미디어 2. API로배우는 Windows의구조 - 한빛미디어 3. 2008 KUCIS 교육 Reverse Engineering 교제 참고사이트 1. http://zesrever.xstone.org/category/ 지식뽐뿌질 %20II( 연재물 ) - zesrever 의지식펌프 2. http://www.openrce.org/reference_library/files/reference/pe%20format.pdf - OpenRCE - 19 -