#[repr(C)]
#[derive(Clone, Copy)]
pub struct IMAGE_COR20_HEADER {
pub cb: u32,
pub MajorRuntimeVersion: u16,
pub MinorRuntimeVersion: u16,
pub MetaData: IMAGE_DATA_DIRECTORY,
pub Flags: u32,
pub Anonymous: IMAGE_COR20_HEADER_0,
pub Resources: IMAGE_DATA_DIRECTORY,
pub StrongNameSignature: IMAGE_DATA_DIRECTORY,
pub CodeManagerTable: IMAGE_DATA_DIRECTORY,
pub VTableFixups: IMAGE_DATA_DIRECTORY,
pub ExportAddressTableJumps: IMAGE_DATA_DIRECTORY,
pub ManagedNativeHeader: IMAGE_DATA_DIRECTORY,
}
impl Default for IMAGE_COR20_HEADER {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy)]
pub union IMAGE_COR20_HEADER_0 {
pub EntryPointToken: u32,
pub EntryPointRVA: u32,
}
impl Default for IMAGE_COR20_HEADER_0 {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy, Default)]
pub struct IMAGE_DATA_DIRECTORY {
pub VirtualAddress: u32,
pub Size: u32,
}
pub const IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR: i32 = 14;
pub const IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE: i32 = 64;
pub const IMAGE_DLLCHARACTERISTICS_NO_SEH: i32 = 1024;
pub const IMAGE_DLLCHARACTERISTICS_NX_COMPAT: i32 = 256;
#[repr(C, packed(2))]
#[derive(Clone, Copy)]
pub struct IMAGE_DOS_HEADER {
pub e_magic: u16,
pub e_cblp: u16,
pub e_cp: u16,
pub e_crlc: u16,
pub e_cparhdr: u16,
pub e_minalloc: u16,
pub e_maxalloc: u16,
pub e_ss: u16,
pub e_sp: u16,
pub e_csum: u16,
pub e_ip: u16,
pub e_cs: u16,
pub e_lfarlc: u16,
pub e_ovno: u16,
pub e_res: [u16; 4],
pub e_oemid: u16,
pub e_oeminfo: u16,
pub e_res2: [u16; 10],
pub e_lfanew: i32,
}
impl Default for IMAGE_DOS_HEADER {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
pub const IMAGE_DOS_SIGNATURE: i32 = 23117;
pub const IMAGE_FILE_32BIT_MACHINE: i32 = 256;
pub const IMAGE_FILE_DLL: i32 = 8192;
pub const IMAGE_FILE_EXECUTABLE_IMAGE: i32 = 2;
#[repr(C)]
#[derive(Clone, Copy, Default)]
pub struct IMAGE_FILE_HEADER {
pub Machine: u16,
pub NumberOfSections: u16,
pub TimeDateStamp: u32,
pub PointerToSymbolTable: u32,
pub NumberOfSymbols: u32,
pub SizeOfOptionalHeader: u16,
pub Characteristics: u16,
}
pub const IMAGE_FILE_MACHINE_I386: i32 = 332;
pub const IMAGE_NT_OPTIONAL_HDR32_MAGIC: i32 = 267;
pub const IMAGE_NT_OPTIONAL_HDR64_MAGIC: i32 = 523;
pub const IMAGE_NT_SIGNATURE: i32 = 17744;
#[repr(C)]
#[derive(Clone, Copy)]
pub struct IMAGE_OPTIONAL_HEADER32 {
pub Magic: u16,
pub MajorLinkerVersion: u8,
pub MinorLinkerVersion: u8,
pub SizeOfCode: u32,
pub SizeOfInitializedData: u32,
pub SizeOfUninitializedData: u32,
pub AddressOfEntryPoint: u32,
pub BaseOfCode: u32,
pub BaseOfData: u32,
pub ImageBase: u32,
pub SectionAlignment: u32,
pub FileAlignment: u32,
pub MajorOperatingSystemVersion: u16,
pub MinorOperatingSystemVersion: u16,
pub MajorImageVersion: u16,
pub MinorImageVersion: u16,
pub MajorSubsystemVersion: u16,
pub MinorSubsystemVersion: u16,
pub Win32VersionValue: u32,
pub SizeOfImage: u32,
pub SizeOfHeaders: u32,
pub CheckSum: u32,
pub Subsystem: u16,
pub DllCharacteristics: u16,
pub SizeOfStackReserve: u32,
pub SizeOfStackCommit: u32,
pub SizeOfHeapReserve: u32,
pub SizeOfHeapCommit: u32,
pub LoaderFlags: u32,
pub NumberOfRvaAndSizes: u32,
pub DataDirectory: [IMAGE_DATA_DIRECTORY; 16],
}
impl Default for IMAGE_OPTIONAL_HEADER32 {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C, packed(4))]
#[derive(Clone, Copy)]
pub struct IMAGE_OPTIONAL_HEADER64 {
pub Magic: u16,
pub MajorLinkerVersion: u8,
pub MinorLinkerVersion: u8,
pub SizeOfCode: u32,
pub SizeOfInitializedData: u32,
pub SizeOfUninitializedData: u32,
pub AddressOfEntryPoint: u32,
pub BaseOfCode: u32,
pub ImageBase: u64,
pub SectionAlignment: u32,
pub FileAlignment: u32,
pub MajorOperatingSystemVersion: u16,
pub MinorOperatingSystemVersion: u16,
pub MajorImageVersion: u16,
pub MinorImageVersion: u16,
pub MajorSubsystemVersion: u16,
pub MinorSubsystemVersion: u16,
pub Win32VersionValue: u32,
pub SizeOfImage: u32,
pub SizeOfHeaders: u32,
pub CheckSum: u32,
pub Subsystem: u16,
pub DllCharacteristics: u16,
pub SizeOfStackReserve: u64,
pub SizeOfStackCommit: u64,
pub SizeOfHeapReserve: u64,
pub SizeOfHeapCommit: u64,
pub LoaderFlags: u32,
pub NumberOfRvaAndSizes: u32,
pub DataDirectory: [IMAGE_DATA_DIRECTORY; 16],
}
impl Default for IMAGE_OPTIONAL_HEADER64 {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy)]
pub struct IMAGE_SECTION_HEADER {
pub Name: [u8; 8],
pub Misc: IMAGE_SECTION_HEADER_0,
pub VirtualAddress: u32,
pub SizeOfRawData: u32,
pub PointerToRawData: u32,
pub PointerToRelocations: u32,
pub PointerToLinenumbers: u32,
pub NumberOfRelocations: u16,
pub NumberOfLinenumbers: u16,
pub Characteristics: u32,
}
impl Default for IMAGE_SECTION_HEADER {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
#[repr(C)]
#[derive(Clone, Copy)]
pub union IMAGE_SECTION_HEADER_0 {
pub PhysicalAddress: u32,
pub VirtualSize: u32,
}
impl Default for IMAGE_SECTION_HEADER_0 {
fn default() -> Self {
unsafe { core::mem::zeroed() }
}
}
pub const IMAGE_SUBSYSTEM_WINDOWS_CUI: i32 = 3;