IKVM11
11
Java SE 11 Virtual Machine for .NET
Loading...
Searching...
No Matches
IMAGE_OPTIONAL_HEADER.cs
Go to the documentation of this file.
1
/*
2
Copyright (C) 2009 Jeroen Frijters
3
4
This software is provided 'as-is', without any express or implied
5
warranty. In no event will the authors be held liable for any damages
6
arising from the use of this software.
7
8
Permission is granted to anyone to use this software for any purpose,
9
including commercial applications, and to alter it and redistribute it
10
freely, subject to the following restrictions:
11
12
1. The origin of this software must not be misrepresented; you must not
13
claim that you wrote the original software. If you use this software
14
in a product, an acknowledgment in the product documentation would be
15
appreciated but is not required.
16
2. Altered source versions must be plainly marked as such, and must not be
17
misrepresented as being the original software.
18
3. This notice may not be removed or altered from any source distribution.
19
20
Jeroen Frijters
21
jeroen@frijters.net
22
23
*/
24
using
System.IO;
25
26
using
BYTE
=
System
.Byte;
27
using
DWORD
=
System
.UInt32;
28
using
ULONGLONG
=
System
.UInt64;
29
using
WORD
=
System
.UInt16;
30
31
namespace
IKVM.Reflection.Reader
32
{
33
34
sealed
class
IMAGE_OPTIONAL_HEADER
35
{
36
37
public
const
WORD
IMAGE_NT_OPTIONAL_HDR32_MAGIC
= 0x10b;
38
public
const
WORD
IMAGE_NT_OPTIONAL_HDR64_MAGIC
= 0x20b;
39
40
public
const
WORD
IMAGE_SUBSYSTEM_WINDOWS_GUI
= 2;
41
public
const
WORD
IMAGE_SUBSYSTEM_WINDOWS_CUI
= 3;
42
43
public
WORD
Magic
;
44
public
BYTE
MajorLinkerVersion
;
45
public
BYTE
MinorLinkerVersion
;
46
public
DWORD
SizeOfCode
;
47
public
DWORD
SizeOfInitializedData
;
48
public
DWORD
SizeOfUninitializedData
;
49
public
DWORD
AddressOfEntryPoint
;
50
public
DWORD
BaseOfCode
;
51
public
DWORD
BaseOfData
;
52
public
ULONGLONG
ImageBase
;
53
public
DWORD
SectionAlignment
;
54
public
DWORD
FileAlignment
;
55
public
WORD
MajorOperatingSystemVersion
;
56
public
WORD
MinorOperatingSystemVersion
;
57
public
WORD
MajorImageVersion
;
58
public
WORD
MinorImageVersion
;
59
public
WORD
MajorSubsystemVersion
;
60
public
WORD
MinorSubsystemVersion
;
61
public
DWORD
Win32VersionValue
;
62
public
DWORD
SizeOfImage
;
63
public
DWORD
SizeOfHeaders
;
64
public
DWORD
CheckSum
;
65
public
WORD
Subsystem
;
66
public
WORD
DllCharacteristics
;
67
public
ULONGLONG
SizeOfStackReserve
;
68
public
ULONGLONG
SizeOfStackCommit
;
69
public
ULONGLONG
SizeOfHeapReserve
;
70
public
ULONGLONG
SizeOfHeapCommit
;
71
public
DWORD
LoaderFlags
;
72
public
DWORD
NumberOfRvaAndSizes
;
73
public
IMAGE_DATA_DIRECTORY
[]
DataDirectory
;
74
75
internal
void
Read(BinaryReader br)
76
{
77
Magic
= br.ReadUInt16();
78
if
(
Magic
!=
IMAGE_NT_OPTIONAL_HDR32_MAGIC
&&
Magic
!=
IMAGE_NT_OPTIONAL_HDR64_MAGIC
)
79
throw
new
BadImageFormatException();
80
81
MajorLinkerVersion
= br.ReadByte();
82
MinorLinkerVersion
= br.ReadByte();
83
SizeOfCode
= br.ReadUInt32();
84
SizeOfInitializedData
= br.ReadUInt32();
85
SizeOfUninitializedData
= br.ReadUInt32();
86
AddressOfEntryPoint
= br.ReadUInt32();
87
BaseOfCode
= br.ReadUInt32();
88
if
(
Magic
==
IMAGE_NT_OPTIONAL_HDR32_MAGIC
)
89
{
90
BaseOfData
= br.ReadUInt32();
91
ImageBase
= br.ReadUInt32();
92
}
93
else
94
{
95
ImageBase
= br.ReadUInt64();
96
}
97
SectionAlignment
= br.ReadUInt32();
98
FileAlignment
= br.ReadUInt32();
99
MajorOperatingSystemVersion
= br.ReadUInt16();
100
MinorOperatingSystemVersion
= br.ReadUInt16();
101
MajorImageVersion
= br.ReadUInt16();
102
MinorImageVersion
= br.ReadUInt16();
103
MajorSubsystemVersion
= br.ReadUInt16();
104
MinorSubsystemVersion
= br.ReadUInt16();
105
Win32VersionValue
= br.ReadUInt32();
106
SizeOfImage
= br.ReadUInt32();
107
SizeOfHeaders
= br.ReadUInt32();
108
CheckSum
= br.ReadUInt32();
109
Subsystem
= br.ReadUInt16();
110
DllCharacteristics = br.ReadUInt16();
111
if
(
Magic
==
IMAGE_NT_OPTIONAL_HDR32_MAGIC
)
112
{
113
SizeOfStackReserve
= br.ReadUInt32();
114
SizeOfStackCommit
= br.ReadUInt32();
115
SizeOfHeapReserve
= br.ReadUInt32();
116
SizeOfHeapCommit
= br.ReadUInt32();
117
}
118
else
119
{
120
SizeOfStackReserve
= br.ReadUInt64();
121
SizeOfStackCommit
= br.ReadUInt64();
122
SizeOfHeapReserve
= br.ReadUInt64();
123
SizeOfHeapCommit
= br.ReadUInt64();
124
}
125
LoaderFlags
= br.ReadUInt32();
126
NumberOfRvaAndSizes
= br.ReadUInt32();
127
DataDirectory
=
new
IMAGE_DATA_DIRECTORY
[
NumberOfRvaAndSizes
];
128
for
(uint i = 0; i <
NumberOfRvaAndSizes
; i++)
129
{
130
DataDirectory
[i] =
new
IMAGE_DATA_DIRECTORY
();
131
DataDirectory
[i].Read(br);
132
}
133
}
134
135
}
136
137
}
DWORD
System.UInt32 DWORD
Definition
IMAGE_DATA_DIRECTORY.cs:26
WORD
System.UInt16 WORD
Definition
IMAGE_FILE_HEADER.cs:27
ULONGLONG
System.UInt64 ULONGLONG
Definition
IMAGE_OPTIONAL_HEADER.cs:28
BYTE
System.Byte BYTE
Definition
IMAGE_OPTIONAL_HEADER.cs:26
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER
Definition
IMAGE_OPTIONAL_HEADER.cs:35
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.SizeOfStackCommit
ULONGLONG SizeOfStackCommit
Definition
IMAGE_OPTIONAL_HEADER.cs:68
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.NumberOfRvaAndSizes
DWORD NumberOfRvaAndSizes
Definition
IMAGE_OPTIONAL_HEADER.cs:72
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.DataDirectory
IMAGE_DATA_DIRECTORY[] DataDirectory
Definition
IMAGE_OPTIONAL_HEADER.cs:73
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.LoaderFlags
DWORD LoaderFlags
Definition
IMAGE_OPTIONAL_HEADER.cs:71
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.SizeOfCode
DWORD SizeOfCode
Definition
IMAGE_OPTIONAL_HEADER.cs:46
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.SizeOfHeapReserve
ULONGLONG SizeOfHeapReserve
Definition
IMAGE_OPTIONAL_HEADER.cs:69
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.MajorImageVersion
WORD MajorImageVersion
Definition
IMAGE_OPTIONAL_HEADER.cs:57
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.SizeOfUninitializedData
DWORD SizeOfUninitializedData
Definition
IMAGE_OPTIONAL_HEADER.cs:48
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.AddressOfEntryPoint
DWORD AddressOfEntryPoint
Definition
IMAGE_OPTIONAL_HEADER.cs:49
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.Subsystem
WORD Subsystem
Definition
IMAGE_OPTIONAL_HEADER.cs:65
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.SizeOfInitializedData
DWORD SizeOfInitializedData
Definition
IMAGE_OPTIONAL_HEADER.cs:47
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.SectionAlignment
DWORD SectionAlignment
Definition
IMAGE_OPTIONAL_HEADER.cs:53
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.BaseOfData
DWORD BaseOfData
Definition
IMAGE_OPTIONAL_HEADER.cs:51
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.IMAGE_NT_OPTIONAL_HDR32_MAGIC
const WORD IMAGE_NT_OPTIONAL_HDR32_MAGIC
Definition
IMAGE_OPTIONAL_HEADER.cs:37
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.SizeOfImage
DWORD SizeOfImage
Definition
IMAGE_OPTIONAL_HEADER.cs:62
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.Magic
WORD Magic
Definition
IMAGE_OPTIONAL_HEADER.cs:43
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.CheckSum
DWORD CheckSum
Definition
IMAGE_OPTIONAL_HEADER.cs:64
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.MinorLinkerVersion
BYTE MinorLinkerVersion
Definition
IMAGE_OPTIONAL_HEADER.cs:45
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.MajorOperatingSystemVersion
WORD MajorOperatingSystemVersion
Definition
IMAGE_OPTIONAL_HEADER.cs:55
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.SizeOfHeaders
DWORD SizeOfHeaders
Definition
IMAGE_OPTIONAL_HEADER.cs:63
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.SizeOfStackReserve
ULONGLONG SizeOfStackReserve
Definition
IMAGE_OPTIONAL_HEADER.cs:67
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.MinorImageVersion
WORD MinorImageVersion
Definition
IMAGE_OPTIONAL_HEADER.cs:58
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.FileAlignment
DWORD FileAlignment
Definition
IMAGE_OPTIONAL_HEADER.cs:54
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.SizeOfHeapCommit
ULONGLONG SizeOfHeapCommit
Definition
IMAGE_OPTIONAL_HEADER.cs:70
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.DllCharacteristics
WORD DllCharacteristics
Definition
IMAGE_OPTIONAL_HEADER.cs:66
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.MajorSubsystemVersion
WORD MajorSubsystemVersion
Definition
IMAGE_OPTIONAL_HEADER.cs:59
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.BaseOfCode
DWORD BaseOfCode
Definition
IMAGE_OPTIONAL_HEADER.cs:50
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.IMAGE_NT_OPTIONAL_HDR64_MAGIC
const WORD IMAGE_NT_OPTIONAL_HDR64_MAGIC
Definition
IMAGE_OPTIONAL_HEADER.cs:38
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.IMAGE_SUBSYSTEM_WINDOWS_GUI
const WORD IMAGE_SUBSYSTEM_WINDOWS_GUI
Definition
IMAGE_OPTIONAL_HEADER.cs:40
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.Win32VersionValue
DWORD Win32VersionValue
Definition
IMAGE_OPTIONAL_HEADER.cs:61
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.ImageBase
ULONGLONG ImageBase
Definition
IMAGE_OPTIONAL_HEADER.cs:52
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.MinorSubsystemVersion
WORD MinorSubsystemVersion
Definition
IMAGE_OPTIONAL_HEADER.cs:60
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.IMAGE_SUBSYSTEM_WINDOWS_CUI
const WORD IMAGE_SUBSYSTEM_WINDOWS_CUI
Definition
IMAGE_OPTIONAL_HEADER.cs:41
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.MinorOperatingSystemVersion
WORD MinorOperatingSystemVersion
Definition
IMAGE_OPTIONAL_HEADER.cs:56
IKVM.Reflection.Reader.IMAGE_OPTIONAL_HEADER.MajorLinkerVersion
BYTE MajorLinkerVersion
Definition
IMAGE_OPTIONAL_HEADER.cs:44
IKVM.Reflection.Reader
Definition
AssemblyReader.cs:31
System
Definition
HexConverter.cs:9
IKVM.Reflection.Reader.IMAGE_DATA_DIRECTORY
Definition
IMAGE_DATA_DIRECTORY.cs:32
src
IKVM.CoreLib
Reflection
Reader
IMAGE_OPTIONAL_HEADER.cs
Generated by
1.12.0