diff options
author | midipix <writeonce@midipix.org> | 2025-06-10 15:36:27 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2025-06-10 18:06:26 +0000 |
commit | 6cc493ea65bf2c94d03f299e6343e8e50b4fb510 (patch) | |
tree | b43078ede385f095b57fc38bc992ad5f41e3fe4b | |
parent | a4b1bbeca250dea98f341502d71f09af636f9a1a (diff) | |
download | perk-6cc493ea65bf2c94d03f299e6343e8e50b4fb510.tar.bz2 perk-6cc493ea65bf2c94d03f299e6343e8e50b4fb510.tar.xz |
reader: implemented pe_read_aux_rec_section().
-rw-r--r-- | include/perk/perk.h | 3 | ||||
-rw-r--r-- | project/common.mk | 1 | ||||
-rw-r--r-- | src/reader/pe_read_aux_rec_section.c | 32 |
3 files changed, 36 insertions, 0 deletions
diff --git a/include/perk/perk.h b/include/perk/perk.h index 47302b4..8c0baae 100644 --- a/include/perk/perk.h +++ b/include/perk/perk.h @@ -359,6 +359,9 @@ perk_api int pe_read_coff_symbol (const struct pe_raw_coff_symbol perk_api int pe_read_import_lookup (const unsigned char *, struct pe_meta_import_lookup *, uint32_t magic); +perk_api int pe_read_aux_rec_section (const struct pe_raw_coff_symbol *, struct pe_meta_aux_rec_section *, + int idx); + /* low-level symtbl api */ perk_api uint32_t pe_hash_mbstr_crc32 (const unsigned char *); perk_api uint64_t pe_hash_mbstr_crc64 (const unsigned char *); diff --git a/project/common.mk b/project/common.mk index 3413382..8951a25 100644 --- a/project/common.mk +++ b/project/common.mk @@ -34,6 +34,7 @@ API_SRCS = \ src/output/pe_output_image_symbols.c \ src/output/pe_output_idata_libraries.c \ src/output/pe_output_mdso_libraries.c \ + src/reader/pe_read_aux_rec_section.c \ src/reader/pe_read_coff_header.c \ src/reader/pe_read_coff_symbol.c \ src/reader/pe_read_dos_header.c \ diff --git a/src/reader/pe_read_aux_rec_section.c b/src/reader/pe_read_aux_rec_section.c new file mode 100644 index 0000000..df75352 --- /dev/null +++ b/src/reader/pe_read_aux_rec_section.c @@ -0,0 +1,32 @@ +/***************************************************************/ +/* perk: PE Resource Kit */ +/* Copyright (C) 2015--2025 SysDeer Technologies, LLC */ +/* Released under GPLv2 and GPLv3; see COPYING.PERK. */ +/***************************************************************/ + +#include <perk/perk.h> +#include <perk/perk_consts.h> +#include <perk/perk_structs.h> +#include "perk_endian_impl.h" +#include "perk_reader_impl.h" + +int pe_read_aux_rec_section( + const struct pe_raw_coff_symbol * p, + struct pe_meta_aux_rec_section * m, + int idx) +{ + const void * addr; + const struct pe_raw_aux_rec_section * arec; + + addr = &p[++idx]; + arec = (struct pe_raw_aux_rec_section *)addr; + + m->aux_size = pe_read_long(arec->aux_size); + m->aux_num_of_relocs = pe_read_short(arec->aux_num_of_relocs); + m->aux_num_of_line_nums = pe_read_short(arec->aux_num_of_line_nums); + m->aux_check_sum = pe_read_long(arec->aux_check_sum); + m->aux_number = pe_read_short(arec->aux_number); + m->aux_selection = arec->aux_selection[0]; + + return 0; +} |