#[repr(C)] pub struct MZHeader { pub magic: u16, pub stuff: [u16; 15 + 4 + 10], pub lfanew: u32, } #[repr(C)] pub struct PeHeader { pub magic: u32, pub machine: u16, pub num_sections: u16, pub time_date_stamp: u32, pub sym_tab_ptr: u32, pub num_symbols: u32, pub opt_header_size: u16, pub characteristics: u16, } #[repr(C)] pub struct OptHeader64 { pub magic: u16, pub major_linker_ver: u8, pub minor_linker_ver: u8, pub code_size: u32, pub init_data_size: u32, pub uninit_data_size: u32, pub entry_addr: u32, pub code_base: u32, pub image_base: u64, pub section_align: u32, pub file_align: u32, pub major_os_ver: u16, pub minor_os_ver: u16, pub major_image_ver: u16, pub minor_image_ver: u16, pub major_subsystem_ver: u16, pub minor_subsystem_ver: u16, pub win32_ver: u32, pub image_size: u32, pub headers_size: u32, pub checksum: u32, pub subsystem: u16, pub dll_characteristics: u16, pub stack_reserve_size: u64, pub stack_commit_size: u64, pub heap_reserve_size: u64, pub heap_commit_size: u64, pub loader_flags: u32, pub num_of_rva_and_sizes: u32, } #[repr(C)] pub struct Section { pub name: [u8; 8], pub virtual_size: u32, pub virtual_addr: u32, pub raw_data_size: u32, pub raw_data_ptr: u32, pub reloc_ptr: u32, pub line_num_ptr: u32, pub num_relocs: u16, pub num_line_nums: u16, pub characteristics: u32, }