LIEF: Library to Instrument Executable Formats Version 0.15.0
Loading...
Searching...
No Matches
PE/Section.h
1/* Copyright 2017 - 2024 R. Thomas
2 * Copyright 2017 - 2024 Quarkslab
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16#ifndef C_LIEF_PE_SECTION_H_
17#define C_LIEF_PE_SECTION_H_
18
19#include <inttypes.h>
20
21#include "LIEF/PE/enums.h"
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27enum LIEF_PE_SECTION_CHARACTERISTICS {
28 LIEF_PE_SECTION_CHARACTERISTICS_TYPE_NO_PAD = 0x00000008,
29 LIEF_PE_SECTION_CHARACTERISTICS_CNT_CODE = 0x00000020,
30 LIEF_PE_SECTION_CHARACTERISTICS_CNT_INITIALIZED_DATA = 0x00000040,
31 LIEF_PE_SECTION_CHARACTERISTICS_CNT_UNINITIALIZED_DATA = 0x00000080,
32 LIEF_PE_SECTION_CHARACTERISTICS_LNK_OTHER = 0x00000100,
33 LIEF_PE_SECTION_CHARACTERISTICS_LNK_INFO = 0x00000200,
34 LIEF_PE_SECTION_CHARACTERISTICS_LNK_REMOVE = 0x00000800,
35 LIEF_PE_SECTION_CHARACTERISTICS_LNK_COMDAT = 0x00001000,
36 LIEF_PE_SECTION_CHARACTERISTICS_GPREL = 0x00008000,
37 LIEF_PE_SECTION_CHARACTERISTICS_MEM_PURGEABLE = 0x00010000,
38 LIEF_PE_SECTION_CHARACTERISTICS_MEM_16BIT = 0x00020000,
39 LIEF_PE_SECTION_CHARACTERISTICS_MEM_LOCKED = 0x00040000,
40 LIEF_PE_SECTION_CHARACTERISTICS_MEM_PRELOAD = 0x00080000,
41 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_1BYTES = 0x00100000,
42 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_2BYTES = 0x00200000,
43 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_4BYTES = 0x00300000,
44 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_8BYTES = 0x00400000,
45 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_16BYTES = 0x00500000,
46 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_32BYTES = 0x00600000,
47 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_64BYTES = 0x00700000,
48 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_128BYTES = 0x00800000,
49 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_256BYTES = 0x00900000,
50 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_512BYTES = 0x00A00000,
51 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_1024BYTES = 0x00B00000,
52 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_2048BYTES = 0x00C00000,
53 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_4096BYTES = 0x00D00000,
54 LIEF_PE_SECTION_CHARACTERISTICS_ALIGN_8192BYTES = 0x00E00000,
55 LIEF_PE_SECTION_CHARACTERISTICS_LNK_NRELOC_OVFL = 0x01000000,
56 LIEF_PE_SECTION_CHARACTERISTICS_MEM_DISCARDABLE = 0x02000000,
57 LIEF_PE_SECTION_CHARACTERISTICS_MEM_NOT_CACHED = 0x04000000,
58 LIEF_PE_SECTION_CHARACTERISTICS_MEM_NOT_PAGED = 0x08000000,
59 LIEF_PE_SECTION_CHARACTERISTICS_MEM_SHARED = 0x10000000,
60 LIEF_PE_SECTION_CHARACTERISTICS_MEM_EXECUTE = 0x20000000,
61 LIEF_PE_SECTION_CHARACTERISTICS_MEM_READ = 0x40000000,
62 LIEF_PE_SECTION_CHARACTERISTICS_MEM_WRITE = 0x80000000
63};
64
65
67 const char* name;
68 uint64_t virtual_address;
69 uint64_t size;
70 uint64_t offset;
71
72 uint32_t virtual_size;
73 uint32_t pointerto_relocation;
74 uint32_t pointerto_line_numbers;
75 uint32_t characteristics;
76
77 uint8_t* content;
78 uint64_t content_size;
79 double entropy;
80
81};
82
83typedef struct Pe_Section_t Pe_Section_t;
84
85#ifdef __cplusplus
86}
87#endif
88
89#endif
Definition PE/Section.h:66