diff options
-rw-r--r-- | include/perk/perk_meta.h | 22 | ||||
-rw-r--r-- | include/perk/perk_structs.h | 20 | ||||
-rw-r--r-- | src/logic/pe_get_image_meta.c | 52 | ||||
-rw-r--r-- | src/output/pe_output_export_symbols.c | 2 | ||||
-rw-r--r-- | src/output/pe_output_image_sections.c | 6 | ||||
-rw-r--r-- | src/reader/pe_read_section_header.c | 24 |
6 files changed, 63 insertions, 63 deletions
diff --git a/include/perk/perk_meta.h b/include/perk/perk_meta.h index 1a53406..9181782 100644 --- a/include/perk/perk_meta.h +++ b/include/perk/perk_meta.h @@ -182,17 +182,17 @@ struct pe_meta_opt_hdr { /* section header */ struct pe_meta_sec_hdr { - char name[16]; - char * long_name; - uint32_t virtual_size; - uint32_t virtual_addr; - uint32_t size_of_raw_data; - uint32_t ptr_to_raw_data; - uint32_t ptr_to_relocs; - uint32_t ptr_to_line_nums; - uint16_t num_of_relocs; - uint16_t num_of_line_nums; - uint32_t characteristics; + char sh_name[16]; + char * sh_long_name; + uint32_t sh_virtual_size; + uint32_t sh_virtual_addr; + uint32_t sh_size_of_raw_data; + uint32_t sh_ptr_to_raw_data; + uint32_t sh_ptr_to_relocs; + uint32_t sh_ptr_to_line_nums; + uint16_t sh_num_of_relocs; + uint16_t sh_num_of_line_nums; + uint32_t sh_characteristics; }; diff --git a/include/perk/perk_structs.h b/include/perk/perk_structs.h index 4a7f647..0256030 100644 --- a/include/perk/perk_structs.h +++ b/include/perk/perk_structs.h @@ -230,16 +230,16 @@ struct pe_raw_image_data_dir { struct pe_raw_sec_hdr { - unsigned char name [0x08]; /* 0x00 */ - unsigned char virtual_size [0x04]; /* 0x08 */ - unsigned char virtual_addr [0x04]; /* 0x0c */ - unsigned char size_of_raw_data [0x04]; /* 0x10 */ - unsigned char ptr_to_raw_data [0x04]; /* 0x14 */ - unsigned char ptr_to_relocs [0x04]; /* 0x18 */ - unsigned char ptr_to_line_nums [0x04]; /* 0x1c */ - unsigned char num_of_relocs [0x02]; /* 0x20 */ - unsigned char num_of_line_nums [0x02]; /* 0x22 */ - unsigned char characteristics [0x04]; /* 0x24 */ + unsigned char sh_name [0x08]; /* 0x00 */ + unsigned char sh_virtual_size [0x04]; /* 0x08 */ + unsigned char sh_virtual_addr [0x04]; /* 0x0c */ + unsigned char sh_size_of_raw_data [0x04]; /* 0x10 */ + unsigned char sh_ptr_to_raw_data [0x04]; /* 0x14 */ + unsigned char sh_ptr_to_relocs [0x04]; /* 0x18 */ + unsigned char sh_ptr_to_line_nums [0x04]; /* 0x1c */ + unsigned char sh_num_of_relocs [0x02]; /* 0x20 */ + unsigned char sh_num_of_line_nums [0x02]; /* 0x22 */ + unsigned char sh_characteristics [0x04]; /* 0x24 */ }; diff --git a/src/logic/pe_get_image_meta.c b/src/logic/pe_get_image_meta.c index 446f20b..a3f9219 100644 --- a/src/logic/pe_get_image_meta.c +++ b/src/logic/pe_get_image_meta.c @@ -37,7 +37,7 @@ void pe_free_image_meta(struct pe_image_meta * meta) int pe_get_named_section_index(const struct pe_image_meta * m, const char * name) { int i; for (i=0; i<m->coff.cfh_num_of_sections; i++) - if (!(strcmp(name,m->sectbl[i].name))) + if (!(strcmp(name,m->sectbl[i].sh_name))) return i; return -1; @@ -49,8 +49,8 @@ int pe_get_block_section_index(const struct pe_image_meta * m, const struct pe_b uint32_t low,high; for (i=0; i<m->coff.cfh_num_of_sections; i++) { - low = m->sectbl[i].virtual_addr; - high = low + m->sectbl[i].virtual_size; + low = m->sectbl[i].sh_virtual_addr; + high = low + m->sectbl[i].sh_virtual_size; if ((block->dh_rva >= low) && (block->dh_rva + block->dh_size <= high)) return i; @@ -65,11 +65,11 @@ int pe_get_roffset_from_rva(const struct pe_image_meta * m, uint32_t rva, uint32 uint32_t low,high; for (i=0; i<m->coff.cfh_num_of_sections; i++) { - low = m->sectbl[i].virtual_addr; - high = low + m->sectbl[i].virtual_size; + low = m->sectbl[i].sh_virtual_addr; + high = low + m->sectbl[i].sh_virtual_size; if ((rva >= low) && (rva < high)) { - *roffset = (rva - low) + m->sectbl[i].ptr_to_raw_data; + *roffset = (rva - low) + m->sectbl[i].sh_ptr_to_raw_data; return 0; } } @@ -83,11 +83,11 @@ int pe_get_rva_from_roffset(const struct pe_image_meta * m, uint32_t roffset, ui uint32_t low,high,ref; for (i=0, ref=~0; i<m->coff.cfh_num_of_sections; i++) { - low = m->sectbl[i].ptr_to_raw_data; - high = low + m->sectbl[i].virtual_size; + low = m->sectbl[i].sh_ptr_to_raw_data; + high = low + m->sectbl[i].sh_virtual_size; if ((roffset >= low) && (roffset < high)) { - *rva = (roffset - low) + m->sectbl[i].virtual_addr; + *rva = (roffset - low) + m->sectbl[i].sh_virtual_addr; return 0; } else if (ref > low) { ref = low; @@ -112,7 +112,7 @@ int pe_get_expsym_by_name( const char * sym; unsigned i; - offset = m->hedata->virtual_addr - m->hedata->ptr_to_raw_data; + offset = m->hedata->sh_virtual_addr - m->hedata->sh_ptr_to_raw_data; symrva = (uint32_t *)((uintptr_t)m->image.addr + (m->edata.name_ptr_rva - offset)); for (i=0; i<m->edata.num_of_name_ptrs; i++) { @@ -146,7 +146,7 @@ int pe_get_expsym_by_index( return -1; if (expsym) { - offset = m->hedata->virtual_addr - m->hedata->ptr_to_raw_data; + offset = m->hedata->sh_virtual_addr - m->hedata->sh_ptr_to_raw_data; symrva = (uint32_t *)((uintptr_t)m->image.addr + (m->edata.name_ptr_rva - offset)); symaddr = (uintptr_t)m->image.addr + symrva[index] - offset; @@ -213,10 +213,10 @@ int pe_get_image_meta( for (i=0; i<m->coff.cfh_num_of_sections; i++) { pe_read_section_header(&m->asectbl[i],&m->sectbl[i]); - if (m->sectbl[i].name[0] == '/') - if ((l = strtol(&m->sectbl[i].name[1],0,10)) > 0) + if (m->sectbl[i].sh_name[0] == '/') + if ((l = strtol(&m->sectbl[i].sh_name[1],0,10)) > 0) if (l < m->coff.cfh_size_of_str_tbl) - m->sectbl[i].long_name = base + m->coff.cfh_ptr_to_str_tbl + l; + m->sectbl[i].sh_long_name = base + m->coff.cfh_ptr_to_str_tbl + l; } /* .edata */ @@ -229,11 +229,11 @@ int pe_get_image_meta( if (s >= 0) { m->hedata = &m->sectbl[s]; - m->aedata = (struct pe_raw_export_hdr *)(base + m->sectbl[s].ptr_to_raw_data - + m->opt.oh_dirs.coh_export_tbl.dh_rva - m->sectbl[s].virtual_addr); + m->aedata = (struct pe_raw_export_hdr *)(base + m->sectbl[s].sh_ptr_to_raw_data + + m->opt.oh_dirs.coh_export_tbl.dh_rva - m->sectbl[s].sh_virtual_addr); } else if (i >= 0) { m->hedata = &m->sectbl[i]; - m->aedata = (struct pe_raw_export_hdr *)(base + m->sectbl[i].ptr_to_raw_data); + m->aedata = (struct pe_raw_export_hdr *)(base + m->sectbl[i].sh_ptr_to_raw_data); } if (m->aedata) { @@ -254,11 +254,11 @@ int pe_get_image_meta( if (s >= 0) { m->hidata = &m->sectbl[s]; - m->aidata = (struct pe_raw_import_hdr *)(base + m->sectbl[s].ptr_to_raw_data - + m->opt.oh_dirs.coh_import_tbl.dh_rva - m->sectbl[s].virtual_addr); + m->aidata = (struct pe_raw_import_hdr *)(base + m->sectbl[s].sh_ptr_to_raw_data + + m->opt.oh_dirs.coh_import_tbl.dh_rva - m->sectbl[s].sh_virtual_addr); } else if (i >= 0) { m->hidata = &m->sectbl[i]; - m->aidata = (struct pe_raw_import_hdr *)(base + m->sectbl[i].ptr_to_raw_data); + m->aidata = (struct pe_raw_import_hdr *)(base + m->sectbl[i].sh_ptr_to_raw_data); } if (m->aidata) { @@ -274,12 +274,12 @@ int pe_get_image_meta( for (i=0; i<m->summary.nimplibs; i++) { pe_read_import_header(&m->aidata[i],&m->idata[i]); - m->idata[i].name = base + m->hidata->ptr_to_raw_data - + m->idata[i].name_rva - m->hidata->virtual_addr; + m->idata[i].name = base + m->hidata->sh_ptr_to_raw_data + + m->idata[i].name_rva - m->hidata->sh_virtual_addr; if (m->idata[i].import_lookup_tbl_rva) - m->idata[i].aitems = (union pe_raw_import_lookup *)(base + m->hidata->ptr_to_raw_data - + m->idata[i].import_lookup_tbl_rva - m->hidata->virtual_addr); + m->idata[i].aitems = (union pe_raw_import_lookup *)(base + m->hidata->sh_ptr_to_raw_data + + m->idata[i].import_lookup_tbl_rva - m->hidata->sh_virtual_addr); /* items */ uint32_t * hint; @@ -317,8 +317,8 @@ int pe_get_image_meta( if (!m->idata[i].items[j].flags) { struct pe_raw_hint_name_entry * pentry = - (struct pe_raw_hint_name_entry *)(base + m->hidata->ptr_to_raw_data - + m->idata[i].items[j].u.hint_name_tbl_rva - m->hidata->virtual_addr); + (struct pe_raw_hint_name_entry *)(base + m->hidata->sh_ptr_to_raw_data + + m->idata[i].items[j].u.hint_name_tbl_rva - m->hidata->sh_virtual_addr); m->idata[i].items[j].name = (char *)pentry->name; } diff --git a/src/output/pe_output_export_symbols.c b/src/output/pe_output_export_symbols.c index 2319a17..6d98f75 100644 --- a/src/output/pe_output_export_symbols.c +++ b/src/output/pe_output_export_symbols.c @@ -52,7 +52,7 @@ int pe_output_export_symbols( return PERK_FILE_ERROR(dctx); mark = m->image.addr; - offset = m->hedata->virtual_addr - m->hedata->ptr_to_raw_data; + offset = m->hedata->sh_virtual_addr - m->hedata->sh_ptr_to_raw_data; symrva = (uint32_t *)(mark + m->edata.name_ptr_rva - offset); for (i=0; i<m->edata.num_of_name_ptrs; i++) diff --git a/src/output/pe_output_image_sections.c b/src/output/pe_output_image_sections.c index 67f0108..c269a8d 100644 --- a/src/output/pe_output_image_sections.c +++ b/src/output/pe_output_image_sections.c @@ -31,9 +31,9 @@ int pe_output_image_sections( for (i=0; i<meta->coff.cfh_num_of_sections; i++) if (fprintf(fout,"%s%s\n", dash, - meta->sectbl[i].long_name - ? meta->sectbl[i].long_name - : meta->sectbl[i].name) < 0) + meta->sectbl[i].sh_long_name + ? meta->sectbl[i].sh_long_name + : meta->sectbl[i].sh_name) < 0) return PERK_FILE_ERROR(dctx); return 0; diff --git a/src/reader/pe_read_section_header.c b/src/reader/pe_read_section_header.c index 04a9e61..ed5e1a3 100644 --- a/src/reader/pe_read_section_header.c +++ b/src/reader/pe_read_section_header.c @@ -13,21 +13,21 @@ int pe_read_section_header(const struct pe_raw_sec_hdr * p, struct pe_meta_sec_hdr * m) { /* name: meta struct conveniently contains null termination */ - memset(m,0,sizeof(m->name)); - memcpy(m,p,sizeof(p->name)); + memset(m,0,sizeof(m->sh_name)); + memcpy(m,p,sizeof(p->sh_name)); - m->long_name = 0; - m->virtual_size = pe_read_long(p->virtual_size); - m->virtual_addr = pe_read_long(p->virtual_addr); - m->size_of_raw_data = pe_read_long(p->size_of_raw_data); - m->ptr_to_raw_data = pe_read_long(p->ptr_to_raw_data); - m->ptr_to_relocs = pe_read_long(p->ptr_to_relocs); - m->ptr_to_line_nums = pe_read_long(p->ptr_to_line_nums); + m->sh_long_name = 0; + m->sh_virtual_size = pe_read_long(p->sh_virtual_size); + m->sh_virtual_addr = pe_read_long(p->sh_virtual_addr); + m->sh_size_of_raw_data = pe_read_long(p->sh_size_of_raw_data); + m->sh_ptr_to_raw_data = pe_read_long(p->sh_ptr_to_raw_data); + m->sh_ptr_to_relocs = pe_read_long(p->sh_ptr_to_relocs); + m->sh_ptr_to_line_nums = pe_read_long(p->sh_ptr_to_line_nums); - m->num_of_relocs = pe_read_short(p->num_of_relocs); - m->num_of_line_nums = pe_read_short(p->num_of_line_nums); + m->sh_num_of_relocs = pe_read_short(p->sh_num_of_relocs); + m->sh_num_of_line_nums = pe_read_short(p->sh_num_of_line_nums); - m->characteristics = pe_read_long(p->characteristics); + m->sh_characteristics = pe_read_long(p->sh_characteristics); return 0; } |