LIEF: Library to Instrument Executable Formats
Version 2.0.0
Toggle main menu visibility
Loading...
Searching...
No Matches
lief-install
x86_64
static
include
LIEF
PE
DosHeader.hpp
Go to the documentation of this file.
1
/* Copyright 2017 - 2026 R. Thomas
2
* Copyright 2017 - 2026 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 LIEF_PE_DOS_HEADER_H
17
#define LIEF_PE_DOS_HEADER_H
18
#include <array>
19
#include <cstdint>
20
#include <ostream>
21
22
#include "
LIEF/Object.hpp
"
23
#include "
LIEF/visibility.h
"
24
25
namespace
LIEF
{
26
class
vector_iostream
;
27
}
28
29
namespace
LIEF::PE
{
30
31
enum class
PE_TYPE
: uint16_t;
32
33
namespace
details
{
34
struct
pe_dos_header;
35
}
36
41
class
LIEF_API
DosHeader
:
public
Object
{
42
public
:
43
using
reserved_t
= std::array<uint16_t, 4>;
44
using
reserved2_t
= std::array<uint16_t, 10>;
45
46
static
constexpr
uint16_t
MAGIC
= 0x5a4d;
// MZ
47
48
DosHeader
(
const
details::pe_dos_header& header);
49
DosHeader
(
const
DosHeader
&) =
default
;
50
DosHeader
&
operator=
(
const
DosHeader
&) =
default
;
51
52
DosHeader
(
DosHeader
&&) =
default
;
53
DosHeader
&
operator=
(
DosHeader
&&) =
default
;
54
55
~DosHeader
()
override
=
default
;
56
58
uint16_t
magic
()
const
{
59
return
magic_;
60
}
61
62
uint16_t
used_bytes_in_last_page
()
const
{
63
return
used_bytes_in_last_page_;
64
}
65
66
uint16_t
file_size_in_pages
()
const
{
67
return
file_sz_in_pages_;
68
}
69
70
uint16_t
numberof_relocation
()
const
{
71
return
nb_relocations_;
72
}
73
74
uint16_t
header_size_in_paragraphs
()
const
{
75
return
header_sz_in_paragraphs_;
76
}
77
78
uint16_t
minimum_extra_paragraphs
()
const
{
79
return
min_extra_paragraphs_;
80
}
81
82
uint16_t
maximum_extra_paragraphs
()
const
{
83
return
max_extra_paragraphs_;
84
}
85
86
uint16_t
initial_relative_ss
()
const
{
87
return
init_relative_ss_;
88
}
89
90
uint16_t
initial_sp
()
const
{
91
return
init_sp_;
92
}
93
94
uint16_t
checksum
()
const
{
95
return
checksum_;
96
}
97
98
uint16_t
initial_ip
()
const
{
99
return
init_ip_;
100
}
101
102
uint16_t
initial_relative_cs
()
const
{
103
return
init_rel_cs_;
104
}
105
106
uint16_t
addressof_relocation_table
()
const
{
107
return
addr_reloc_table_;
108
}
109
110
uint16_t
overlay_number
()
const
{
111
return
overlay_number_;
112
}
113
114
const
reserved_t
&
reserved
()
const
{
115
return
reserved_;
116
}
117
118
uint16_t
oem_id
()
const
{
119
return
oem_id_;
120
}
121
122
uint16_t
oem_info
()
const
{
123
return
oem_info_;
124
}
125
126
const
reserved2_t
&
reserved2
()
const
{
127
return
reserved2_;
128
}
129
131
uint32_t
addressof_new_exeheader
()
const
{
132
return
addr_new_exe_header_;
133
}
134
135
void
magic
(uint16_t
magic
) {
136
magic_ =
magic
;
137
}
138
139
void
used_bytes_in_last_page
(uint16_t value) {
140
used_bytes_in_last_page_ = value;
141
}
142
143
void
file_size_in_pages
(uint16_t value) {
144
file_sz_in_pages_ = value;
145
}
146
147
void
numberof_relocation
(uint16_t value) {
148
nb_relocations_ = value;
149
}
150
151
void
header_size_in_paragraphs
(uint16_t value) {
152
header_sz_in_paragraphs_ = value;
153
}
154
155
void
minimum_extra_paragraphs
(uint16_t value) {
156
min_extra_paragraphs_ = value;
157
}
158
159
void
maximum_extra_paragraphs
(uint16_t value) {
160
max_extra_paragraphs_ = value;
161
}
162
163
void
initial_relative_ss
(uint16_t value) {
164
init_relative_ss_ = value;
165
}
166
167
void
initial_sp
(uint16_t value) {
168
init_sp_ = value;
169
}
170
171
void
checksum
(uint16_t value) {
172
checksum_ = value;
173
}
174
175
void
initial_ip
(uint16_t value) {
176
init_ip_ = value;
177
}
178
179
void
initial_relative_cs
(uint16_t value) {
180
init_rel_cs_ = value;
181
}
182
183
void
addressof_relocation_table
(uint16_t value) {
184
addr_reloc_table_ = value;
185
}
186
187
void
overlay_number
(uint16_t value) {
188
overlay_number_ = value;
189
}
190
191
void
reserved
(
const
reserved_t
&
reserved
) {
192
reserved_ =
reserved
;
193
}
194
195
void
oem_id
(uint16_t value) {
196
oem_id_ = value;
197
}
198
199
void
oem_info
(uint16_t value) {
200
oem_info_ = value;
201
}
202
203
void
reserved2
(
const
reserved2_t
&
reserved2
) {
204
reserved2_ =
reserved2
;
205
}
206
207
void
addressof_new_exeheader
(uint32_t value) {
208
addr_new_exe_header_ = value;
209
}
210
211
void
accept
(
Visitor
& visitor)
const override
;
212
213
LIEF_API
friend
std::ostream&
operator<<
(std::ostream& os,
214
const
DosHeader
& entry);
215
216
static
DosHeader
create
(
PE_TYPE
type);
217
219
LIEF_LOCAL
DosHeader
() =
default
;
220
222
LIEF_LOCAL
size_t
serialize(
vector_iostream
& ios)
const
;
223
224
private
:
225
uint16_t magic_ = 0;
226
uint16_t used_bytes_in_last_page_ = 0;
227
uint16_t file_sz_in_pages_ = 0;
228
uint16_t nb_relocations_ = 0;
229
uint16_t header_sz_in_paragraphs_ = 0;
230
uint16_t min_extra_paragraphs_ = 0;
231
uint16_t max_extra_paragraphs_ = 0;
232
uint16_t init_relative_ss_ = 0;
233
uint16_t init_sp_ = 0;
234
uint16_t checksum_ = 0;
235
uint16_t init_ip_ = 0;
236
uint16_t init_rel_cs_ = 0;
237
uint16_t addr_reloc_table_ = 0;
238
uint16_t overlay_number_ = 0;
239
reserved_t
reserved_ = {0};
240
uint16_t oem_id_ = 0;
241
uint16_t oem_info_ = 0;
242
reserved2_t reserved2_ = {0};
243
uint32_t addr_new_exe_header_ = 0;
244
};
245
}
246
247
248
#endif
Object.hpp
LIEF::Object::Object
Object()
LIEF::PE::DosHeader::minimum_extra_paragraphs
void minimum_extra_paragraphs(uint16_t value)
Definition
DosHeader.hpp:155
LIEF::PE::DosHeader::magic
uint16_t magic() const
Magic bytes identifying a DOS/PE binary.
Definition
DosHeader.hpp:58
LIEF::PE::DosHeader::file_size_in_pages
void file_size_in_pages(uint16_t value)
Definition
DosHeader.hpp:143
LIEF::PE::DosHeader::numberof_relocation
uint16_t numberof_relocation() const
Definition
DosHeader.hpp:70
LIEF::PE::DosHeader::MAGIC
static constexpr uint16_t MAGIC
Definition
DosHeader.hpp:46
LIEF::PE::DosHeader::operator=
DosHeader & operator=(const DosHeader &)=default
LIEF::PE::DosHeader::operator=
DosHeader & operator=(DosHeader &&)=default
LIEF::PE::DosHeader::initial_relative_cs
uint16_t initial_relative_cs() const
Definition
DosHeader.hpp:102
LIEF::PE::DosHeader::DosHeader
DosHeader(DosHeader &&)=default
LIEF::PE::DosHeader::oem_id
void oem_id(uint16_t value)
Definition
DosHeader.hpp:195
LIEF::PE::DosHeader::reserved
void reserved(const reserved_t &reserved)
Definition
DosHeader.hpp:191
LIEF::PE::DosHeader::addressof_relocation_table
uint16_t addressof_relocation_table() const
Definition
DosHeader.hpp:106
LIEF::PE::DosHeader::initial_sp
uint16_t initial_sp() const
Definition
DosHeader.hpp:90
LIEF::PE::DosHeader::header_size_in_paragraphs
uint16_t header_size_in_paragraphs() const
Definition
DosHeader.hpp:74
LIEF::PE::DosHeader::reserved
const reserved_t & reserved() const
Definition
DosHeader.hpp:114
LIEF::PE::DosHeader::accept
void accept(Visitor &visitor) const override
LIEF::PE::DosHeader::oem_id
uint16_t oem_id() const
Definition
DosHeader.hpp:118
LIEF::PE::DosHeader::oem_info
void oem_info(uint16_t value)
Definition
DosHeader.hpp:199
LIEF::PE::DosHeader::used_bytes_in_last_page
void used_bytes_in_last_page(uint16_t value)
Definition
DosHeader.hpp:139
LIEF::PE::DosHeader::header_size_in_paragraphs
void header_size_in_paragraphs(uint16_t value)
Definition
DosHeader.hpp:151
LIEF::PE::DosHeader::reserved2
void reserved2(const reserved2_t &reserved2)
Definition
DosHeader.hpp:203
LIEF::PE::DosHeader::overlay_number
void overlay_number(uint16_t value)
Definition
DosHeader.hpp:187
LIEF::PE::DosHeader::initial_ip
uint16_t initial_ip() const
Definition
DosHeader.hpp:98
LIEF::PE::DosHeader::reserved2_t
std::array< uint16_t, 10 > reserved2_t
Definition
DosHeader.hpp:44
LIEF::PE::DosHeader::addressof_new_exeheader
uint32_t addressof_new_exeheader() const
Return the offset to the PE::Header structure.
Definition
DosHeader.hpp:131
LIEF::PE::DosHeader::numberof_relocation
void numberof_relocation(uint16_t value)
Definition
DosHeader.hpp:147
LIEF::PE::DosHeader::operator<<
friend std::ostream & operator<<(std::ostream &os, const DosHeader &entry)
LIEF::PE::DosHeader::addressof_relocation_table
void addressof_relocation_table(uint16_t value)
Definition
DosHeader.hpp:183
LIEF::PE::DosHeader::reserved2
const reserved2_t & reserved2() const
Definition
DosHeader.hpp:126
LIEF::PE::DosHeader::magic
void magic(uint16_t magic)
Definition
DosHeader.hpp:135
LIEF::PE::DosHeader::initial_sp
void initial_sp(uint16_t value)
Definition
DosHeader.hpp:167
LIEF::PE::DosHeader::overlay_number
uint16_t overlay_number() const
Definition
DosHeader.hpp:110
LIEF::PE::DosHeader::maximum_extra_paragraphs
uint16_t maximum_extra_paragraphs() const
Definition
DosHeader.hpp:82
LIEF::PE::DosHeader::DosHeader
DosHeader(const DosHeader &)=default
LIEF::PE::DosHeader::~DosHeader
~DosHeader() override=default
LIEF::PE::DosHeader::oem_info
uint16_t oem_info() const
Definition
DosHeader.hpp:122
LIEF::PE::DosHeader::file_size_in_pages
uint16_t file_size_in_pages() const
Definition
DosHeader.hpp:66
LIEF::PE::DosHeader::checksum
uint16_t checksum() const
Definition
DosHeader.hpp:94
LIEF::PE::DosHeader::initial_relative_cs
void initial_relative_cs(uint16_t value)
Definition
DosHeader.hpp:179
LIEF::PE::DosHeader::reserved_t
std::array< uint16_t, 4 > reserved_t
Definition
DosHeader.hpp:43
LIEF::PE::DosHeader::minimum_extra_paragraphs
uint16_t minimum_extra_paragraphs() const
Definition
DosHeader.hpp:78
LIEF::PE::DosHeader::initial_ip
void initial_ip(uint16_t value)
Definition
DosHeader.hpp:175
LIEF::PE::DosHeader::maximum_extra_paragraphs
void maximum_extra_paragraphs(uint16_t value)
Definition
DosHeader.hpp:159
LIEF::PE::DosHeader::DosHeader
DosHeader(const details::pe_dos_header &header)
LIEF::PE::DosHeader::create
static DosHeader create(PE_TYPE type)
LIEF::PE::DosHeader::initial_relative_ss
void initial_relative_ss(uint16_t value)
Definition
DosHeader.hpp:163
LIEF::PE::DosHeader::addressof_new_exeheader
void addressof_new_exeheader(uint32_t value)
Definition
DosHeader.hpp:207
LIEF::PE::DosHeader::used_bytes_in_last_page
uint16_t used_bytes_in_last_page() const
Definition
DosHeader.hpp:62
LIEF::PE::DosHeader::checksum
void checksum(uint16_t value)
Definition
DosHeader.hpp:171
LIEF::PE::DosHeader::initial_relative_ss
uint16_t initial_relative_ss() const
Definition
DosHeader.hpp:86
LIEF::Visitor
Definition
Visitor.hpp:212
LIEF::vector_iostream
Definition
iostream.hpp:34
LIEF::PE::details
Definition
DataDirectory.hpp:38
LIEF::PE
Namespace related to the LIEF's PE module.
Definition
Abstract/Header.hpp:32
LIEF::PE::PE_TYPE
PE_TYPE
Definition
PE/enums.hpp:22
LIEF
LIEF namespace.
Definition
Abstract/Binary.hpp:42
visibility.h
LIEF_API
#define LIEF_API
Definition
visibility.h:45
LIEF_LOCAL
#define LIEF_LOCAL
Definition
visibility.h:46
Generated by
1.19.0