libintrovirt v0.57.4
IntroVirt introspection library
Loading...
Searching...
No Matches
IMAGE_OPTIONAL_HEADER.hh
Go to the documentation of this file.
1/*
2 * Copyright 2021 Assured Information Security, Inc.
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#pragma once
17
21
23
24#include <cstdint>
25#include <string>
26
27namespace introvirt {
28namespace windows {
29namespace pe {
30
32 public:
33 virtual uint16_t Magic() const = 0;
34 virtual uint8_t MajorLinkerVersion() const = 0;
35 virtual uint8_t MinorLinkerVersion() const = 0;
36 virtual uint32_t SizeOfCode() const = 0;
37 virtual uint32_t SizeOfInitializedData() const = 0;
38 virtual uint32_t SizeOfUninitializedData() const = 0;
40 virtual guest_ptr<void> BaseOfCode() const = 0;
41 virtual guest_ptr<void> BaseOfData() const = 0;
42 virtual uint64_t ImageBase() const = 0;
43 virtual uint32_t SectionAlignment() const = 0;
44 virtual uint32_t FileAlignment() const = 0;
45 virtual uint16_t MajorOperatingSystemVersion() const = 0;
46 virtual uint16_t MinorOperatingSystemVersion() const = 0;
47 virtual uint16_t MajorImageVersion() const = 0;
48 virtual uint16_t MinorImageVersion() const = 0;
49 virtual uint16_t MajorSubsystemVersion() const = 0;
50 virtual uint16_t MinorSubsystemVersion() const = 0;
51 virtual uint32_t Win32VersionValue() const = 0;
52 virtual uint32_t SizeOfImage() const = 0;
53 virtual uint32_t SizeOfHeaders() const = 0;
54 virtual uint32_t CheckSum() const = 0;
55 virtual uint16_t Subsystem() const = 0;
56 virtual uint16_t DllCharacteristics() const = 0;
57 virtual uint64_t SizeOfStackReserve() const = 0;
58 virtual uint64_t SizeOfStackCommit() const = 0;
59 virtual uint64_t SizeOfHeapReserve() const = 0;
60 virtual uint64_t SizeOfHeapCommit() const = 0;
61 virtual uint32_t LoaderFlags() const = 0;
62 virtual uint32_t NumberOfRvaAndSizes() const = 0;
63
65 virtual const IMAGE_DEBUG_DIRECTORY* debug_directory() const = 0;
66 virtual const IMAGE_EXCEPTION_SECTION* exception_directory() const = 0;
67 virtual const IMAGE_EXPORT_DIRECTORY* export_directory() const = 0;
68 virtual const IMAGE_RESOURCE_DIRECTORY* resource_directory() const = 0;
69 virtual const IMPORT_NAME_TABLE* import_directory() const = 0;
70
76 virtual guest_ptr<void> ptr() const = 0;
77
84 virtual bool x64() const = 0;
85
86 static std::unique_ptr<IMAGE_OPTIONAL_HEADER> make_unique(const guest_ptr<void>& image_base,
87 const IMAGE_FILE_HEADER& file_header);
88
89 virtual ~IMAGE_OPTIONAL_HEADER() = default;
90};
91
92} /* namespace pe */
93} /* namespace windows */
94} /* namespace introvirt */
Definition guest_ptr.hh:88
Definition IMAGE_DEBUG_DIRECTORY.hh:31
Definition IMAGE_EXCEPTION_SECTION.hh:26
Definition IMAGE_EXPORT_DIRECTORY.hh:42
Also known as the COFF_HEADER.
Definition IMAGE_FILE_HEADER.hh:34
Definition IMAGE_OPTIONAL_HEADER.hh:31
virtual uint32_t SizeOfInitializedData() const =0
virtual const IMAGE_DEBUG_DIRECTORY * debug_directory() const =0
virtual uint16_t MinorImageVersion() const =0
virtual uint32_t SizeOfHeaders() const =0
virtual guest_ptr< void > AddressOfEntryPoint() const =0
virtual uint16_t MajorSubsystemVersion() const =0
virtual uint16_t DllCharacteristics() const =0
virtual uint16_t MajorOperatingSystemVersion() const =0
virtual uint64_t SizeOfHeapCommit() const =0
virtual guest_ptr< void > BaseOfCode() const =0
virtual const IMAGE_EXCEPTION_SECTION * exception_directory() const =0
virtual const IMAGE_EXPORT_DIRECTORY * export_directory() const =0
virtual const IMPORT_NAME_TABLE * import_directory() const =0
virtual uint32_t FileAlignment() const =0
virtual bool x64() const =0
Check if the PE is 32 or 64 bit.
virtual uint16_t MinorSubsystemVersion() const =0
virtual uint32_t SizeOfCode() const =0
virtual uint16_t MinorOperatingSystemVersion() const =0
virtual uint16_t MajorImageVersion() const =0
virtual uint64_t SizeOfStackCommit() const =0
virtual uint32_t SectionAlignment() const =0
virtual uint32_t LoaderFlags() const =0
virtual uint64_t SizeOfStackReserve() const =0
virtual guest_ptr< void > BaseOfData() const =0
virtual uint8_t MinorLinkerVersion() const =0
virtual uint32_t SizeOfImage() const =0
virtual uint32_t Win32VersionValue() const =0
static std::unique_ptr< IMAGE_OPTIONAL_HEADER > make_unique(const guest_ptr< void > &image_base, const IMAGE_FILE_HEADER &file_header)
virtual uint64_t SizeOfHeapReserve() const =0
virtual guest_ptr< void > ptr() const =0
Get the address of the IMAGE_OPTIONAL_HEADER.
virtual uint8_t MajorLinkerVersion() const =0
virtual const IMAGE_RESOURCE_DIRECTORY * resource_directory() const =0
virtual const IMAGE_RELOCATION_SECTION * basereloc_directory() const =0
virtual uint32_t NumberOfRvaAndSizes() const =0
virtual uint32_t SizeOfUninitializedData() const =0
Definition IMAGE_RELOCATION_SECTION.hh:30
Definition IMAGE_RESOURCE_DIRECTORY.hh:30
Definition IMPORT_NAME_TABLE.hh:27
Type-safe guest virtual address pointer and guest_ptr template.
Core IntroVirt classes.
Definition Cr0.hh:20