]>
Commit | Line | Data |
---|---|---|
5e146a75 LP |
1 | #pragma once |
2 | ||
3 | #include <inttypes.h> | |
4 | ||
5 | #include "macro.h" | |
6 | #include "sparse-endian.h" | |
7 | ||
8 | struct DosFileHeader { | |
9 | uint8_t Magic[2]; | |
10 | le16_t LastSize; | |
11 | le16_t nBlocks; | |
12 | le16_t nReloc; | |
13 | le16_t HdrSize; | |
14 | le16_t MinAlloc; | |
15 | le16_t MaxAlloc; | |
16 | le16_t ss; | |
17 | le16_t sp; | |
18 | le16_t Checksum; | |
19 | le16_t ip; | |
20 | le16_t cs; | |
21 | le16_t RelocPos; | |
22 | le16_t nOverlay; | |
23 | le16_t reserved[4]; | |
24 | le16_t OEMId; | |
25 | le16_t OEMInfo; | |
26 | le16_t reserved2[10]; | |
27 | le32_t ExeHeader; | |
28 | } _packed_; | |
29 | ||
30 | #define PE_HEADER_MACHINE_I386 0x014cU | |
31 | #define PE_HEADER_MACHINE_X64 0x8664U | |
32 | ||
33 | struct PeFileHeader { | |
34 | le16_t Machine; | |
35 | le16_t NumberOfSections; | |
36 | le32_t TimeDateStamp; | |
37 | le32_t PointerToSymbolTable; | |
38 | le32_t NumberOfSymbols; | |
39 | le16_t SizeOfOptionalHeader; | |
40 | le16_t Characteristics; | |
41 | } _packed_; | |
42 | ||
43 | struct PeHeader { | |
44 | uint8_t Magic[4]; | |
45 | struct PeFileHeader FileHeader; | |
46 | } _packed_; | |
47 | ||
48 | struct PeSectionHeader { | |
49 | uint8_t Name[8]; | |
50 | le32_t VirtualSize; | |
51 | le32_t VirtualAddress; | |
52 | le32_t SizeOfRawData; | |
53 | le32_t PointerToRawData; | |
54 | le32_t PointerToRelocations; | |
55 | le32_t PointerToLinenumbers; | |
56 | le16_t NumberOfRelocations; | |
57 | le16_t NumberOfLinenumbers; | |
58 | le32_t Characteristics; | |
59 | } _packed_; |