1582, 1/80 회원가입  로그인  
   p0wermilk
   pe_format.png (21.1 KB), Download : 1     [오른쪽 버튼 눌러 다운 받기]
   Windows Reverse Engineering PeFile

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=8561 [복사]



PeFile 포맷이란 윈도우즈 운영체제 상에서 실행가능한 파일을 의미합니다.
예를 들어 exe, dll등이 포함되죠.
심지어 오브젝트 파일인 obj확장자도 PeFile에 포함이 됩니다.
하지만 오브젝트 파일은 기계어로만 되어 있는 실행파일 이전의 파일이라서
리버싱을 하거나 배울 때 크게 의미가 없습니다.

(1) IMAGE_DOS_HEADER

아래는 IMAGE_DOS_HEADER 구조체입니다.
크기는 40입니다.

==================================================
typedef struct _IMAGE_DOS_HEADER {
   WORD  e_magic;      /* 00: MZ Header signature */
   WORD  e_cblp;       /* 02: Bytes on last page of file */
   WORD  e_cp;         /* 04: Pages in file */
   WORD  e_crlc;       /* 06: Relocations */
   WORD  e_cparhdr;    /* 08: Size of header in paragraphs */
   WORD  e_minalloc;   /* 0a: Minimum extra paragraphs needed */
   WORD  e_maxalloc;   /* 0c: Maximum extra paragraphs needed */
   WORD  e_ss;         /* 0e: Initial (relative) SS value */
   WORD  e_sp;         /* 10: Initial SP value */
   WORD  e_csum;       /* 12: Checksum */
   WORD  e_ip;         /* 14: Initial IP value */
   WORD  e_cs;         /* 16: Initial (relative) CS value */
   WORD  e_lfarlc;     /* 18: File address of relocation table */
   WORD  e_ovno;       /* 1a: Overlay number */
   WORD  e_res[4];     /* 1c: Reserved words */
   WORD  e_oemid;      /* 24: OEM identifier (for e_oeminfo) */
   WORD  e_oeminfo;    /* 26: OEM information; e_oemid specific */
   WORD  e_res2[10];   /* 28: Reserved words */
   DWORD e_lfanew;     /* 3c: Offset (pointer) to PE header */
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
==================================================

위의 구조체를 전부 다 외울 필요는 없고
꼭 알고가야 될 구조체 변수는 맨 위의 e_magic과 맨 밑에 e_lfanew입니다.

e_magic는 MZ(4A5D)를 의미하며 MZ는
MS-DOS를 프로그래밍했던 마크 주비코브스키(Mark Zbikowsk)의
이니셜에서 따왔습니다.

e_lfanew는 4바이트 크기 IMAGE_DOS_HEADER의 가장 마지막필드입니다.



(2) DOS Stub
Dos Stub는 32비트이상의 크기를 가지지 않고 도스 프로그램과 연관이 있습니다.
32비트 이상의 Windows OS에서는 명령어가 실행되지 않습니다.


==========================================================
4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F8 00 00 00 0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F 74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 6D 6F 64 65 2E 0D 0D 0A 24 00 00 00 00 00 00 00 14 D9 54 C8 50 B8 3A 9B 50 B8 3A 9B 50 B8 3A 9B 59 C0 A9 9B 7E B8 3A 9B 44 D3 3E 9A 5A B8 3A 9B 44 D3 39 9A 53 B8 3A 9B 44 D3 3B 9A 59 B8 3A 9B 50 B8 3B 9B 7C BD 3A 9B 44 D3 32 9A 4E B8 3A 9B 44 D3 3F 9A 71 B8 3A 9B 44 D3 C7 9B 51 B8 3A 9B 44 D3 C5 9B 51 B8 3A 9B 44 D3 38 9A 51 B8 3A 9B


MZ�������ÿÿ��¸�������@�����������������������������������ø���º�´        Í!¸LÍ!This program cannot be run in DOS mode.

$�������ÙTÈP¸:›P¸:›P¸:›YÀ©›~¸:›DÓ>šZ¸:›DÓ9šS¸:›DÓ;šY¸:›P¸;›|½:›DÓ2šN¸:›DÓ?šq¸:›DÓÇ›Q¸:›DÓÅ›Q¸:›DÓ8šQ¸:›

=========================================================

위에 암호같은 문자는 hxd로 notepad.exe를 열어본 결과입니다.
맨 처음 4D5A가 보이죠? 이 파일은 pefile이라는 걸 암시해주는 겁니다.

1. DOS MZ가 PE 헤더의 Offset을 가지고 있음
2. DOS MZ 헤더는 IMAGE_DOS_HEADER 구조체 정의 (windows.inc에서 확인)

이로서 아주 간단하게 pefile에 대해 알아봤습니다.

  Hit : 432     Date : 2021/03/09 02:15
[불법/스팸글로 신고하기]



    
     [공지] 강좌를 올리실 때는 말머리를 달아주세요^ㅡ^ [29] 멍멍 02/27 15679
  Windows Reverse Engineering PeFile     p0wermilk
03/09 431
1580   해킹과 프로그래밍의 관계 (퍼온 글)     p0wermilk
01/29 672
1579   4차원 배열을 우리 머릿속에서 도형화하기[2]     p0wermilk
12/26 742
1578   towelroot.c (zip) 코멘팅.[1]     scube
08/18 1019
1577   levitator.c (안드로이드 루팅) 공격 분석 소스 코드 공유.[2]     scube
08/17 1070
1576   무료 정보보안 기술인재 양성 과정 교육생 모집     chanjung111
06/17 1498
1575   K-Shield 주니어 5기 모집     lrtk
06/17 1368
1574   [팁] 파이썬 2소스를 3으로 변경해주는 사이트[3]     한승재
05/13 1268
1573   구글 백링크 작업 질문요     wkatnxka
03/30 1121
1572   [팁] 우분투 미러링서버     한승재
03/09 1292
1571   [자작글] php로 상대방 IP 알아내기 [2]     한승재
02/27 2022
1570 비밀글입니다  감을못잡겠네요ㅜㅜ     잉잉잉
01/15 1
1569   데비안 계열 리눅스 의존성 깨졌을때 해결법     한승재
11/27 1488
1568   해킹길라잡이     한승재
11/02 2241
1567   홍보합니다. 신생 보안커뮤니티입니다.     kimwoojin0952
10/26 1785
1566   신기한 프로그래밍 언어[2]     koreal33t
09/06 2016
1565   윈도우,리눅스에서 내 ip를 확인해 보자 [1]     koreal33t
09/06 1538
1564   CTF 사이트[1]     koreal33t
09/06 1784
1563   자격증 (문제)사이트 [1]     koreal33t
09/06 1685
1 [2][3][4][5][6][7][8][9][10]..[80]

Copyright 1999-2021 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com