Blame include/perk/perk_structs.h

c0fbae
#ifndef PERK_STRUCTS_H
c0fbae
#define PERK_STRUCTS_H
c0fbae
c0fbae
#ifdef __cplusplus
c0fbae
extern "C" {
c0fbae
#endif
c0fbae
99c452
struct pe_raw_image_dos_hdr {
7d4d3d
	unsigned char	dos_magic			[0x02];		/* 0x00 */
7d4d3d
	unsigned char	dos_cblp			[0x02];		/* 0x02 */
7d4d3d
	unsigned char	dos_cp				[0x02];		/* 0x04 */
7d4d3d
	unsigned char	dos_crlc			[0x02];		/* 0x06 */
7d4d3d
	unsigned char	dos_cparhdr			[0x02];		/* 0x08 */
7d4d3d
	unsigned char	dos_minalloc			[0x02];		/* 0x0a */
7d4d3d
	unsigned char	dos_maxalloc			[0x02];		/* 0x0c */
7d4d3d
	unsigned char	dos_ss				[0x02];		/* 0x0e */
7d4d3d
	unsigned char	dos_sp				[0x02];		/* 0x10 */
7d4d3d
	unsigned char	dos_csum			[0x02];		/* 0x12 */
7d4d3d
	unsigned char	dos_ip				[0x02];		/* 0x14 */
7d4d3d
	unsigned char	dos_cs				[0x02];		/* 0x16 */
7d4d3d
	unsigned char	dos_lfarlc			[0x02];		/* 0x18 */
7d4d3d
	unsigned char	dos_ovno			[0x02];		/* 0x1a */
7d4d3d
	unsigned char	dos_res				[0x08];		/* 0x1c */
7d4d3d
	unsigned char	dos_oemid			[0x02];		/* 0x24 */
7d4d3d
	unsigned char	dos_oeminfo			[0x02];		/* 0x26 */
7d4d3d
	unsigned char	dos_res2			[0x14];		/* 0x28 */
7d4d3d
	unsigned char	dos_lfanew			[0x04];		/* 0x3c */
c0fbae
};
c0fbae
c0fbae
822ef0
struct pe_raw_coff_image_hdr {
da15f0
	unsigned char	cfh_signature			[0x04];		/* 0x00 */
da15f0
	unsigned char	cfh_machine			[0x02];		/* 0x04 */
da15f0
	unsigned char	cfh_num_of_sections		[0x02];		/* 0x06 */
da15f0
	unsigned char	cfh_time_date_stamp		[0x04];		/* 0x08 */
da15f0
	unsigned char	cfh_ptr_to_sym_tbl		[0x04];		/* 0x0c */
da15f0
	unsigned char	cfh_num_of_syms			[0x04];		/* 0x10 */
da15f0
	unsigned char	cfh_size_of_opt_hdr		[0x02];		/* 0x14 */
da15f0
	unsigned char	cfh_characteristics		[0x02];		/* 0x16 */
c0fbae
};
c0fbae
c0fbae
d94db5
struct pe_raw_coff_object_hdr {
d94db5
	unsigned char	cfh_machine			[0x02];		/* 0x00 */
d94db5
	unsigned char	cfh_num_of_sections		[0x02];		/* 0x02 */
d94db5
	unsigned char	cfh_time_date_stamp		[0x04];		/* 0x04 */
d94db5
	unsigned char	cfh_ptr_to_sym_tbl		[0x04];		/* 0x08 */
d94db5
	unsigned char	cfh_num_of_syms			[0x04];		/* 0x0c */
d94db5
	unsigned char	cfh_size_of_opt_hdr		[0x02];		/* 0x10 */
d94db5
	unsigned char	cfh_characteristics		[0x02];		/* 0x12 */
d94db5
};
d94db5
d94db5
8cb34f
struct pe_raw_opt_hdr_std {
d34ab8
	unsigned char	coh_magic			[0x02];		/* 0x00 */
d34ab8
	unsigned char	coh_major_linker_ver		[0x01];		/* 0x02 */
d34ab8
	unsigned char	coh_minor_linker_ver		[0x01];		/* 0x03 */
d34ab8
	unsigned char	coh_size_of_code		[0x04];		/* 0x04 */
d34ab8
	unsigned char	coh_size_of_inited_data		[0x04];		/* 0x08 */
d34ab8
	unsigned char	coh_size_of_uninited_data	[0x04];		/* 0x0c */
d34ab8
	unsigned char	coh_entry_point			[0x04];		/* 0x10 */
d34ab8
	unsigned char	coh_base_of_code		[0x04];		/* 0x14 */
c0fbae
};
c0fbae
f85420
8cb34f
struct pe_raw_opt_hdr_align {
ca9b3d
	unsigned char	coh_section_align		[0x04];		/* 0x20 */
ca9b3d
	unsigned char	coh_file_align			[0x04];         /* 0x24 */
c0fbae
};
c0fbae
f85420
8cb34f
struct pe_raw_opt_hdr_vers {
9fdefd
	unsigned char	coh_major_os_ver		[0x02];		/* 0x28 */
9fdefd
	unsigned char	coh_minor_os_ver		[0x02];		/* 0x2a */
9fdefd
	unsigned char	coh_major_image_ver		[0x02];		/* 0x2c */
9fdefd
	unsigned char	coh_minor_image_ver		[0x02];		/* 0x2e */
9fdefd
	unsigned char	coh_major_subsys_ver		[0x02];		/* 0x30 */
9fdefd
	unsigned char	coh_minor_subsys_ver		[0x02];		/* 0x32 */
9fdefd
	unsigned char	coh_win32_ver			[0x04];		/* 0x34 */
c0fbae
};
c0fbae
f85420
8cb34f
struct pe_raw_opt_hdr_img {
b6ce09
	unsigned char	coh_size_of_image		[0x04];		/* 0x38 */
b6ce09
	unsigned char	coh_size_of_headers		[0x04];		/* 0x3c */
b6ce09
	unsigned char	coh_checksum			[0x04];		/* 0x40 */
b6ce09
	unsigned char	coh_subsystem			[0x02];		/* 0x44 */
b6ce09
	unsigned char	coh_dll_characteristics		[0x02];		/* 0x46 */
c0fbae
};
c0fbae
f85420
8cb34f
struct pe_raw_opt_hdr_ldr {
01f370
	unsigned char	coh_loader_flags		[0x04];
01f370
	unsigned char	coh_rva_and_sizes		[0x04];
c0fbae
};
c0fbae
f85420
8cb34f
struct pe_raw_opt_hdr_dirs {
0d33f1
	unsigned char	coh_export_tbl			[0x08];
0d33f1
	unsigned char	coh_import_tbl			[0x08];
0d33f1
	unsigned char	coh_resource_tbl		[0x08];
0d33f1
	unsigned char	coh_exception_tbl		[0x08];
0d33f1
	unsigned char	coh_certificate_tbl		[0x08];
0d33f1
	unsigned char	coh_base_reloc_tbl		[0x08];
0d33f1
	unsigned char	coh_debug			[0x08];
0d33f1
	unsigned char	coh_arch			[0x08];
0d33f1
	unsigned char	coh_global_ptr			[0x08];
0d33f1
	unsigned char	coh_tls_tbl			[0x08];
0d33f1
	unsigned char	coh_load_config_tbl		[0x08];
0d33f1
	unsigned char	coh_bound_import		[0x08];
0d33f1
	unsigned char	coh_iat				[0x08];
0d33f1
	unsigned char	coh_delay_import_descriptor	[0x08];
0d33f1
	unsigned char	coh_clr_runtime_hdr		[0x08];
0d33f1
	unsigned char	coh_reserved			[0x08];
8d1514
};
8d1514
f85420
8cb34f
struct pe_raw_data_dirs {
38e46d
	unsigned char	coh_rva_and_sizes		[0x04];
38e46d
	unsigned char	coh_export_tbl			[0x08];
38e46d
	unsigned char	coh_import_tbl			[0x08];
38e46d
	unsigned char	coh_resource_tbl		[0x08];
38e46d
	unsigned char	coh_exception_tbl		[0x08];
38e46d
	unsigned char	coh_certificate_tbl		[0x08];
38e46d
	unsigned char	coh_base_reloc_tbl		[0x08];
38e46d
	unsigned char	coh_debug			[0x08];
38e46d
	unsigned char	coh_arch			[0x08];
38e46d
	unsigned char	coh_global_ptr			[0x08];
38e46d
	unsigned char	coh_tls_tbl			[0x08];
38e46d
	unsigned char	coh_load_config_tbl		[0x08];
38e46d
	unsigned char	coh_bound_import		[0x08];
38e46d
	unsigned char	coh_iat				[0x08];
38e46d
	unsigned char	coh_delay_import_descriptor	[0x08];
38e46d
	unsigned char	coh_clr_runtime_hdr		[0x08];
38e46d
	unsigned char	coh_reserved			[0x08];
c0fbae
};
c0fbae
f85420
8cb34f
struct pe_raw_opt_hdr_32 {
9b6975
	unsigned char	coh_magic			[0x02];		/* 0x00 */
9b6975
	unsigned char	coh_major_linker_ver		[0x01];		/* 0x02 */
9b6975
	unsigned char	coh_minor_linker_ver		[0x01];		/* 0x03 */
9b6975
	unsigned char	coh_size_of_code		[0x04];		/* 0x04 */
9b6975
	unsigned char	coh_size_of_inited_data		[0x04];		/* 0x08 */
9b6975
	unsigned char	coh_size_of_uninited_data	[0x04];		/* 0x0c */
9b6975
	unsigned char	coh_entry_point			[0x04];		/* 0x10 */
9b6975
	unsigned char	coh_base_of_code		[0x04];		/* 0x14 */
9b6975
	unsigned char	coh_base_of_data		[0x04];		/* 0x18 */
9b6975
	unsigned char	coh_image_base			[0x04];		/* 0x1c */
9b6975
	unsigned char	coh_section_align		[0x04];		/* 0x20 */
9b6975
	unsigned char	coh_file_align			[0x04];         /* 0x24 */
9b6975
	unsigned char	coh_major_os_ver		[0x02];		/* 0x28 */
9b6975
	unsigned char	coh_minor_os_ver		[0x02];		/* 0x2a */
9b6975
	unsigned char	coh_major_image_ver		[0x02];		/* 0x2c */
9b6975
	unsigned char	coh_minor_image_ver		[0x02];		/* 0x2e */
9b6975
	unsigned char	coh_major_subsys_ver		[0x02];		/* 0x30 */
9b6975
	unsigned char	coh_minor_subsys_ver		[0x02];		/* 0x32 */
9b6975
	unsigned char	coh_win32_ver			[0x04];		/* 0x34 */
9b6975
	unsigned char	coh_size_of_image		[0x04];		/* 0x38 */
9b6975
	unsigned char	coh_size_of_headers		[0x04];		/* 0x3c */
9b6975
	unsigned char	coh_checksum			[0x04];		/* 0x40 */
9b6975
	unsigned char	coh_subsystem			[0x02];		/* 0x44 */
9b6975
	unsigned char	coh_dll_characteristics		[0x02];		/* 0x46 */
9b6975
	unsigned char	coh_size_of_stack_reserve	[0x04];		/* 0x48 */
9b6975
	unsigned char	coh_size_of_stack_commit	[0x04];		/* 0x4c */
9b6975
	unsigned char	coh_size_of_heap_reserve	[0x04];		/* 0x50 */
9b6975
	unsigned char	coh_size_of_heap_commit		[0x04];		/* 0x54 */
9b6975
	unsigned char	coh_loader_flags		[0x04];		/* 0x58 */
9b6975
	unsigned char	coh_rva_and_sizes		[0x04];		/* 0x5c */
9b6975
	unsigned char	coh_export_tbl			[0x08];		/* 0x60 */
9b6975
	unsigned char	coh_import_tbl			[0x08];		/* 0x68 */
9b6975
	unsigned char	coh_resource_tbl		[0x08];		/* 0x70 */
9b6975
	unsigned char	coh_exception_tbl		[0x08];		/* 0x78 */
9b6975
	unsigned char	coh_certificate_tbl		[0x08];		/* 0x80 */
9b6975
	unsigned char	coh_base_reloc_tbl		[0x08];		/* 0x88 */
9b6975
	unsigned char	coh_debug			[0x08];		/* 0x90 */
9b6975
	unsigned char	coh_arch			[0x08];		/* 0x98 */
9b6975
	unsigned char	coh_global_ptr			[0x08];		/* 0xa0 */
9b6975
	unsigned char	coh_tls_tbl			[0x08];		/* 0xa8 */
9b6975
	unsigned char	coh_load_config_tbl		[0x08];		/* 0xb0 */
9b6975
	unsigned char	coh_bound_import		[0x08];		/* 0xb8 */
9b6975
	unsigned char	coh_iat				[0x08];		/* 0xc0 */
9b6975
	unsigned char	coh_delay_import_descriptor	[0x08];		/* 0xc8 */
9b6975
	unsigned char	coh_clr_runtime_hdr		[0x08];		/* 0xd0 */
9b6975
	unsigned char	coh_reserved			[0x08];		/* 0xd8 */
c0fbae
};
c0fbae
c0fbae
8cb34f
struct pe_raw_opt_hdr_64 {
9b6975
	unsigned char	coh_magic			[0x02];		/* 0x00 */
9b6975
	unsigned char	coh_major_linker_ver		[0x01];		/* 0x02 */
9b6975
	unsigned char	coh_minor_linker_ver		[0x01];		/* 0x03 */
9b6975
	unsigned char	coh_size_of_code		[0x04];		/* 0x04 */
9b6975
	unsigned char	coh_size_of_inited_data		[0x04];		/* 0x08 */
9b6975
	unsigned char	coh_size_of_uninited_data	[0x04];		/* 0x0c */
9b6975
	unsigned char	coh_entry_point			[0x04];		/* 0x10 */
9b6975
	unsigned char	coh_base_of_code		[0x04];		/* 0x14 */
9b6975
	unsigned char	coh_image_base			[0x08];		/* 0x18 */
9b6975
	unsigned char	coh_section_align		[0x04];		/* 0x20 */
9b6975
	unsigned char	coh_file_align			[0x04];         /* 0x24 */
9b6975
	unsigned char	coh_major_os_ver		[0x02];		/* 0x28 */
9b6975
	unsigned char	coh_minor_os_ver		[0x02];		/* 0x2a */
9b6975
	unsigned char	coh_major_image_ver		[0x02];		/* 0x2c */
9b6975
	unsigned char	coh_minor_image_ver		[0x02];		/* 0x2e */
9b6975
	unsigned char	coh_major_subsys_ver		[0x02];		/* 0x30 */
9b6975
	unsigned char	coh_minor_subsys_ver		[0x02];		/* 0x32 */
9b6975
	unsigned char	coh_win32_ver			[0x04];		/* 0x34 */
9b6975
	unsigned char	coh_size_of_image		[0x04];		/* 0x38 */
9b6975
	unsigned char	coh_size_of_headers		[0x04];		/* 0x3c */
9b6975
	unsigned char	coh_checksum			[0x04];		/* 0x40 */
9b6975
	unsigned char	coh_subsystem			[0x02];		/* 0x44 */
9b6975
	unsigned char	coh_dll_characteristics		[0x02];		/* 0x46 */
9b6975
	unsigned char	coh_size_of_stack_reserve	[0x08];		/* 0x48 */
9b6975
	unsigned char	coh_size_of_stack_commit	[0x08];		/* 0x50 */
9b6975
	unsigned char	coh_size_of_heap_reserve	[0x08];		/* 0x58 */
9b6975
	unsigned char	coh_size_of_heap_commit		[0x08];		/* 0x60 */
9b6975
	unsigned char	coh_loader_flags		[0x04];		/* 0x68 */
9b6975
	unsigned char	coh_rva_and_sizes		[0x04];		/* 0x6c */
9b6975
	unsigned char	coh_export_tbl			[0x08];		/* 0x70 */
9b6975
	unsigned char	coh_import_tbl			[0x08];		/* 0x78 */
9b6975
	unsigned char	coh_resource_tbl		[0x08];		/* 0x80 */
9b6975
	unsigned char	coh_exception_tbl		[0x08];		/* 0x88 */
9b6975
	unsigned char	coh_certificate_tbl		[0x08];		/* 0x90 */
9b6975
	unsigned char	coh_base_reloc_tbl		[0x08];		/* 0x98 */
9b6975
	unsigned char	coh_debug			[0x08];		/* 0xa0 */
9b6975
	unsigned char	coh_arch			[0x08];		/* 0xa8 */
9b6975
	unsigned char	coh_global_ptr			[0x08];		/* 0xb0 */
9b6975
	unsigned char	coh_tls_tbl			[0x08];		/* 0xb8 */
9b6975
	unsigned char	coh_load_config_tbl		[0x08];		/* 0xc0 */
9b6975
	unsigned char	coh_bound_import		[0x08];		/* 0xc8 */
9b6975
	unsigned char	coh_iat				[0x08];		/* 0xd0 */
9b6975
	unsigned char	coh_delay_import_descriptor	[0x08];		/* 0xd8 */
9b6975
	unsigned char	coh_clr_runtime_hdr		[0x08];		/* 0xe0 */
9b6975
	unsigned char	coh_reserved			[0x08];		/* 0xe8 */
c0fbae
};
c0fbae
c0fbae
8cb34f
union pe_raw_opt_hdr {
8cb34f
	struct pe_raw_opt_hdr_32    opt_hdr_32;
8cb34f
	struct pe_raw_opt_hdr_64    opt_hdr_64;
c0fbae
};
c0fbae
c0fbae
cef008
struct pe_raw_image_data_dir {
2486e6
	unsigned char	dh_rva				[0x04];		/* 0x00 */
2486e6
	unsigned char	dh_size				[0x04];		/* 0x04 */
c0fbae
};
c0fbae
c0fbae
a09b56
struct pe_raw_sec_hdr {
9740a3
	unsigned char	sh_name				[0x08];		/* 0x00 */
9740a3
	unsigned char	sh_virtual_size			[0x04];		/* 0x08 */
9740a3
	unsigned char	sh_virtual_addr			[0x04];		/* 0x0c */
9740a3
	unsigned char	sh_size_of_raw_data		[0x04];		/* 0x10 */
9740a3
	unsigned char	sh_ptr_to_raw_data		[0x04];		/* 0x14 */
9740a3
	unsigned char	sh_ptr_to_relocs		[0x04];		/* 0x18 */
9740a3
	unsigned char	sh_ptr_to_line_nums		[0x04];		/* 0x1c */
9740a3
	unsigned char	sh_num_of_relocs		[0x02];		/* 0x20 */
9740a3
	unsigned char	sh_num_of_line_nums		[0x02];		/* 0x22 */
9740a3
	unsigned char	sh_characteristics		[0x04];		/* 0x24 */
c0fbae
};
c0fbae
c0fbae
8dd726
struct pe_raw_export_hdr {
d1e52d
	unsigned char	eh_export_flags			[0x04];		/* 0x00 */
d1e52d
	unsigned char	eh_time_date_stamp		[0x04];		/* 0x04 */
d1e52d
	unsigned char	eh_major_ver			[0x02];		/* 0x08 */
d1e52d
	unsigned char	eh_minor_ver			[0x02];		/* 0x0a */
d1e52d
	unsigned char	eh_name_rva			[0x04];		/* 0x0c */
d1e52d
	unsigned char	eh_ordinal_base			[0x04];		/* 0x10 */
d1e52d
	unsigned char	eh_addr_tbl_entries		[0x04];		/* 0x14 */
d1e52d
	unsigned char	eh_num_of_name_ptrs		[0x04];		/* 0x18 */
d1e52d
	unsigned char	eh_export_addr_tbl_rva		[0x04];		/* 0x1c */
d1e52d
	unsigned char	eh_name_ptr_rva			[0x04];		/* 0x20 */
d1e52d
	unsigned char	eh_ordinal_tbl_rva		[0x04];		/* 0x24 */
c0fbae
};
c0fbae
c0fbae
8dd726
union pe_raw_export_addr_tbl {
44d096
	unsigned char	  ee_export_rva			[0x04];		/* 0x00 */
44d096
	unsigned char	  ee_forwarder_rva		[0x04];		/* 0x00 */
c0fbae
};
c0fbae
c0fbae
34ee9e
struct pe_raw_import_hdr {
982672
	unsigned char	ih_import_lookup_tbl_rva	[0x04];		/* 0x00 */
982672
	unsigned char	ih_time_date_stamp		[0x04];		/* 0x04 */
982672
	unsigned char	ih_forwarder_chain		[0x04];		/* 0x08 */
982672
	unsigned char	ih_name_rva			[0x04];		/* 0x0c */
982672
	unsigned char	ih_import_addr_tbl_rva		[0x04];		/* 0x10 */
c0fbae
};
c0fbae
c0fbae
4b8f04
struct pe_raw_import_name {
4b8f04
	unsigned char	ih_name				[0x01];		/* 0x00 */
4b8f04
};
4b8f04
4b8f04
4dc3a4
union pe_raw_import_lookup {
4dc3a4
	unsigned char	ii_import_lookup_entry_64	[0x08];		/* 0x00 */
4dc3a4
	unsigned char	ii_import_lookup_entry_32	[0x04];		/* 0x00 */
4dc3a4
};
4dc3a4
4dc3a4
34ee9e
struct pe_raw_hint_name_entry {
c8c131
	unsigned char	ii_hint				[0x02];		/* 0x00 */
c8c131
	unsigned char	ii_name				[0x02];		/* 0x02 */
c0fbae
};
c0fbae
c0fbae
e75572
struct pe_raw_coff_symbol {
0c1d83
	unsigned char	cs_name				[0x08];		/* 0x00 */
0c1d83
	unsigned char	cs_value			[0x04];		/* 0x08 */
0c1d83
	unsigned char	cs_section_number		[0x02];		/* 0x0c */
0c1d83
	unsigned char	cs_type				[0x02];		/* 0x0e */
0c1d83
	unsigned char	cs_storage_class		[0x01];		/* 0x10 */
0c1d83
	unsigned char	cs_num_of_aux_symbols		[0x01];		/* 0x11 */
7ec070
};
7ec070
f85420
e75572
struct pe_raw_coff_symbol_name {
64ebb8
	union {
00e3d8
		unsigned char		cs_short_name	[0x08];		/* 0x00 */
64ebb8
64ebb8
		struct {
00e3d8
			unsigned char	cs_zeroes	[0x04];		/* 0x00 */
00e3d8
			unsigned char	cs_offset	[0x04];		/* 0x04 */
64ebb8
		} long_name;
e55918
	} cs_u;
64ebb8
};
7ec070
f85420
0d7eba
struct pe_raw_coff_strtbl {
0d7eba
	unsigned char	cst_size			[0x04];		/* 0x00 */
636aa1
	unsigned char	cst_data			[0x01];		/* 0x04 */
0d7eba
};
0d7eba
0d7eba
0d7eba
struct pe_raw_coff_reloc {
0d7eba
	unsigned char	rel_rva				[0x04];		/* 0x00 */
0d7eba
	unsigned char	rel_sym				[0x04];		/* 0x04 */
0d7eba
	unsigned char	rel_type			[0x02];		/* 0x08 */
0d7eba
};
0d7eba
0d7eba
0d7eba
struct pe_raw_aux_rec_section {
0d7eba
	unsigned char	aux_size			[0x04];		/* 0x00 */
0d7eba
	unsigned char	aux_num_of_relocs		[0x02];		/* 0x04 */
0d7eba
	unsigned char	aux_num_of_line_nums		[0x02];		/* 0x06 */
0d7eba
	unsigned char	aux_check_sum			[0x04];		/* 0x08 */
0d7eba
	unsigned char	aux_number			[0x02];		/* 0x0c */
0d7eba
	unsigned char	aux_selection			[0x01];		/* 0x0e */
0d7eba
	unsigned char	aux_pad				[0x03];		/* 0x0f */
0d7eba
};
0d7eba
d6c3a1
struct pe_raw_archive_common_hdr {
d6c3a1
	unsigned char	ar_file_id			[0x10];		/* 0x00 */
d6c3a1
	unsigned char	ar_time_date_stamp		[0x0c];		/* 0x10 */
d6c3a1
	unsigned char	ar_uid				[0x06];		/* 0x1c */
d6c3a1
	unsigned char	ar_gid				[0x06];		/* 0x22 */
d6c3a1
	unsigned char	ar_file_mode			[0x08];		/* 0x28 */
d6c3a1
	unsigned char	ar_file_size			[0x0a];		/* 0x30 */
d6c3a1
	unsigned char	ar_end_tag			[0x02];		/* 0x3a */
d6c3a1
d6c3a1
};
d6c3a1
c0fbae
#ifdef __cplusplus
c0fbae
}
c0fbae
#endif
c0fbae
c0fbae
#endif