PE结构一览

Offset

0  1  2  3  4  5  6  7   8  9   A   B  C  D  E  F

 

00000000

00000010

00000020

00000030

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 B0 00 00 00

MZ?..........

?......@.......

................

............?..

00000040

00000050

00000060

00000070

00000080

00000090

000000A 0

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

5D 65 FD C8 19 04 93 9B  19 04 93 9B 19 04 93 9B

97 1B 80 9B 11 04 93 9B  E5 24 81 9B 18 04 93 9B

52 69 63 68 19 04 93 9B  00 00 00 00 00 00 00 00

..?.???L?Th

is program canno

t be run in DOS

mode....$.......

]e......

??.?..

Rich..........

000000B0

000000C 0

000000D0

000000E0

000000f 0

00000100

00000110

00000120

00000130

00000140

00000150

00000160

00000170

00000180

00000190

000001A 0

50 45 00 00 4C 01 03 00  3E FD 24 45 00 00 00 00

00 00 00 00 E0 00 0F 01  0B 01 05 0C 00 02 00 00

00 04 00 00 00 00 00 00  00 10 00 00 00 10 00 00

00 20 00 00 00 00 40 00  00 10 00 00 00 02 00 00

04 00 00 00 00 00 00 00  04 00 00 00 00 00 00 00

00 40 00 00 00 04 00 00  00 00 00 00 02 00 00 00

00 00 10 00 00 10 00 00  00 00 10 00 00 10 00 00

00 00 00 00 10 00 00 00  00 00 00 00 00 00 00 00

14 20 00 00 3C 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  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 00 00 00 00 00

00 00 00 00 00 00 00 00  00 20 00 00 14 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  2E 74 65 78 74 00 00 00

PE..L...>?E....

....?..........

................

. ....@.........

................

.@..............

................

................

. ..<...........

................

................

................

................

......... ......

................

.........text...

000001B0

000001C 0

000001D0

000001E0

000001F 0

00000200

00000210

…………

30 00 00 00 00 10 00 00  00 02 00 00 00 04 00 00

00 00 00 00 00 00 00 00  00 00 00 00 20 00 00 E0

2E 72 64 61 74 61 00 00   A 6 00 00 00 00 20 00 00

00 02 00 00 00 06 00 00  00 00 00 00 00 00 00 00

00 00 00 00 40 00 00 40  2E 64 61 74 61 00 00 00

42 00 00 00 00 30 00 00  00 02 00 00 00 08 00 00

00 00 00 00 00 00 00 00  00 00 00 00 40 00 00 C 0

 节表

0...............

............ ..?

.rdata..?... ..

................

....@..@.data...

B....0..........

............@..

00000400

…………

000009F 0

 

                  节文件数据

 

 

 

DOS头(DOS MZ header):它是一个IMAGE_DOS_HEADER结构,定义如下:

IMAGE_DOS_HEADER STRUCT     ;64个字节

  e_magic           WORD      ?     ;DOS头标记,其值固定为 5A 4Dh

  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             WORD   4 dup(?)

  e_oemid           WORD      ?

  e_oeminfo         WORD      ?

  e_res2            WORD  10 dup(?)

  e_lfanew          DWORD      ?    ;指向 PE header 的文件偏移量

IMAGE_DOS_HEADER ENDS

 

DOS代码(DOS stub

 

 

 

 

PE头(PE header):它是一个IMAGE_NT_HEADERS 结构,定义如下:

IMAGE_NT_HEADERS STRUCT

  Signature         DWORD                   ?     ;PE头标记

  FileHeader        IMAGE_FILE_HEADER       <>    ;文件头/20个字节

  OptionalHeader    IMAGE_OPTIONAL_HEADER32 <>    ;任选头

IMAGE_NT_HEADERS ENDS

 

文件头(FileHeader):它是一个IMAGE_FILE_HEADER结构,定义如下:

IMAGE_FILE_HEADER STRUCT    ;20个字节

  Machine               WORD    ?

  NumberOfSections      WORD    ? ;文件的节数目

  TimeDateStamp         DWORD   ? ;文件创建日期和时间

  PointerToSymbolTable  DWORD   ?

  NumberOfSymbols       DWORD   ?

  SizeOfOptionalHeader  WORD    ?    ; 指示紧随本结构之后的OptionalHeader 结构大小

  Characteristics       WORD    ?; 关于文件信息的标记,比如文件是exe还是dll

IMAGE_FILE_HEADER ENDS

 

任选头(OptionalHeader):它是一个IMAGE_OPTIONAL_HEADER32结构,定义如下:

IMAGE_OPTIONAL_HEADER32 STRUCT

  Magic                         WORD       ?

  MajorLinkerVersion            BYTE       ?

  MinorLinkerVersion            BYTE       ?

  SizeOfCode                    DWORD      ?

  SizeOfInitializedData         DWORD      ?

  SizeOfUninitializedData       DWORD      ?

  AddressOfEntryPoint           DWORD      ?; PE装载器准备运行的第一个指令的RVA

  BaseOfCode                    DWORD      ?

  BaseOfData                    DWORD      ?

  ImageBase                     DWORD      ?; PE文件的优先装载地址(映像基址)

  SectionAlignment              DWORD      ?; 内存中节对齐的粒度

  FileAlignment                 DWORD      ?; 文件中节对齐的粒度

  MajorOperatingSystemVersion   WORD       ?

  MinorOperatingSystemVersion   WORD       ?

  MajorImageVersion             WORD       ?

  MinorImageVersion             WORD       ?

  MajorSubsystemVersion         WORD       ?

  MinorSubsystemVersion         WORD       ?

  Win32VersionValue             DWORD      ?

  SizeOfImage                   DWORD      ?; 内存中整个PE映像体的尺寸

  SizeOfHeaders                 DWORD      ?; 所有头+节表的大小

  CheckSum                      DWORD      ?

  Subsystem                     WORD       ?; NT用来识别PE文件属于哪个子系统

  DllCharacteristics            WORD       ?

  SizeOfStackReserve            DWORD      ?

  SizeOfStackCommit             DWORD      ?

  SizeOfHeapReserve             DWORD      ?

  SizeOfHeapCommit              DWORD      ?

  LoaderFlags                   DWORD      ?

  NumberOfRvaAndSizes           DWORD      ?

  DataDirectory                 IMAGE_DATA_DIRECTORY 16 dup(<>);数据目录

IMAGE_OPTIONAL_HEADER32 ENDS

 

数据目录(DataDirectory):它是一个IMAGE_DATA_DIRECTORY结构,定义如下:

IMAGE_DATA_DIRECTORY STRUCT

  VirtualAddress    DWORD      ?;指向 IMAGE_IMPORT_DESCRIPTOR 数组的RVA

  isize             DWORD      ?

IMAGE_DATA_DIRECTORY ENDS

 

 

节表(Section table):它是一个IMAGE_SECTION_HEADER结构,定义如下

IMAGE_SECTION_HEADER STRUCT     ;40个字节

    Name1                 db        8 dup(?)  ;节名

    union Misc

        PhysicalAddress   dd  ?

        VirtualSize       dd      ?

    ends

    VirtualAddress        dd       ?; 本节的RVA(相对虚拟地址)

    SizeOfRawData         dd        ?; 经过文件对齐处理后节尺寸

    PointerToRawData      dd     ?; 这是节基于文件的偏移量

    PointerToRelocations  dd ?

    PointerToLinenumbers  dd ?

    NumberOfRelocations   dw  ?

    NumberOfLinenumbers   dw  ?

    Characteristics       dd      ?; 包含标记以指示节属性

IMAGE_SECTION_HEADER ENDS

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值