티스토리 뷰
PE 구조 정리
PE란?
이식이 가능한 어떤 곳에 넣어줘도 실행일 가능한 파일 포맷
Windows 32bit OS에서 실행 가능한 파일 or PE32 = PE
PE구조 => windows 실행파일 구조
PE+ == PE32+(64bit)
HDD ---(PE Loader)---> RAM ---> CPU
PE 실행파일의 시작
시작지점에 MZ 라는 문자가 시작이다.
"MZ"가 시작이면 실행가능 파일이다.
"PE\0\0" 문자도 있으면 RAM에 올릴 수 있다.
PE 시그니처 = PE00 ( PE구조를 나타내는 표시)
PE로더
PE로더 --> 'MZ'를 찾음(못찾으면 실행파일x). --> 찾았으면 PE시그니처를 찾음 (못찾으면 DOS실행파일) --> 찾으면 RAM
PE구조 분석을 위한 Tool 사용
HxD (수정가능)
PEView (수정X, 구조가 잘 나타남)
리소스해커 (프로그램안에 그림, 버튼, 아이콘을 가져옴)
PE파일의 종류
실행 파일 계열 : EXE, SCR(화면보호기 실행파일)
라이브러리 계열 : DLL, OCX(ActiveX)
드라이브 계열 : SYS (윈도우 win32 폴더)
오브젝트 파일 계열 : OBJ(접근이 많지 않음)
IMAGE_DOS_HEADER & Dos Stub (64byte) | PE 헤더 각각의 공간(창고공간) | Offset(낮음)
Offset(높음) |
IMAGE_NT_HEADER | ||
Section Table IMAGE_SECTION_HEADER[ ] | ||
.text (코드, 명령어) | PE 바디부분 | |
.data (문자열 / 전역변수) | ||
.edata (export 함수정보) DLL | ||
.idata (import 함수정보) DLL | ||
.rsrc (리소스섹션) 이미지, 메뉴,버튼,아이콘 | ||
… |
Dos Stub : DOS에서 실행가능한 코드가 들어있음.
DOS HEADER : e_magic (MZ) , e_lfanew (NT_HEADER OFFSET) 파일상의 주소
NT HEADER
PE Signature(PE\0\0)
FILE_HEADER(파일속성) - 구조체
OPTIONAL_HEADER(부가적인 정보) -구조체
import 함수 : 외부에서 가져옴
export 함수 : 외부로 전달해줌
IMAGE_DOS_HEADER
Typedef struct_IMAGE_DOS_HEADER { WORD e_magic; WORD e_cblp; WORD e_cp; WORD e_crlc; WORD e_cparhdr; WORD e_minalloc; WORD e_maxalloc; WORD e__ss; WORD e_sp; WORD e_csum; WORD e_ip; WORD e_cs; WORD e_lfarlc; WORD e_ovno; WORD e_res[4]; WORD e_oemid; WORD e_oeminfo; WORD e_res2[10]; LONG e_lfanew; (4byte) } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; |
// DOS .EXE header // Magic number // Bytes on last page of file // Pages in file // Relocations // Size of header in paragraphs // Minimum extra paragraphs needed // Maximum extra paragrapgs needed // Initial (relative) SS value; // Initial SP value; // Checksum; // Initial IP value // Initial (relative) CS value // File address of relocation table // Overlay number // Reserved words // OEM identifier (for e_oeminfo) // OEM information; e_oemid specific // Reserved words // File address of new exe header |
'ETC > 종합' 카테고리의 다른 글
netsh 포트포워딩 (0) | 2017.11.12 |
---|---|
kali ssh 부팅시 실행 (0) | 2017.09.23 |
아파치 403에러 (0) | 2016.01.09 |
원격데스크톱 설정 (0) | 2015.09.24 |
윈도우 기본 압축 / 해제 (0) | 2015.09.17 |