From 5c78a73341a7d84c72c1ed775b88cd7d7cc4c66e Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 26 Apr 2015 19:50:04 -0400 Subject: complete draft of api needed for high-priority functionality. --- perk/perk.h | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/perk/perk.h b/perk/perk.h index 7b7a5f7..28bee77 100644 --- a/perk/perk.h +++ b/perk/perk.h @@ -27,28 +27,41 @@ struct pe_raw_image { }; struct pe_image_meta { - struct pe_image_dos_hdr * ados; - struct pe_coff_file_hdr * acoff; - union pe_opt_hdr * aopt; + struct pe_raw_image image; struct pe_meta_image_dos_hdr dos; struct pe_meta_coff_file_hdr coff; struct pe_meta_opt_hdr opt; + struct pe_meta_sec_hdr * sectbl; + + struct pe_image_dos_hdr * ados; + struct pe_coff_file_hdr * acoff; + union pe_opt_hdr * aopt; + struct pe_sec_hdr * asectbl; + + struct pe_meta_export_hdr edata; + struct pe_export_hdr * aedata; + struct pe_meta_sec_hdr * hedata; }; +/* utility api */ +int perk_main (int argc, char * argv[], char * envp[]); + /* high-level api */ -int pe_map_raw_image (int fd, char * fname, struct pe_raw_image *); +int pe_map_raw_image (int fd, char * fname, struct pe_raw_image *); int pe_unmap_raw_image (struct pe_raw_image *); -int pe_get_image_meta (char * image, struct pe_image_meta ** meta); +int pe_get_image_meta (struct pe_raw_image * image, struct pe_image_meta ** meta); int pe_free_image_meta (struct pe_image_meta * meta); -/* low-level api */ -int pe_read_dos_header (struct pe_image_dos_hdr * p, struct pe_meta_image_dos_hdr * m); -int pe_read_coff_header (struct pe_coff_file_hdr * p, struct pe_meta_coff_file_hdr * m); -int pe_read_optional_header (union pe_opt_hdr * p, struct pe_meta_opt_hdr * m); +int pe_get_named_section_index (struct pe_image_meta * meta, char * name); +int pe_output_export_symbols (struct pe_image_meta * meta, FILE * stream); -int perk_main(int argc, char * argv[], char * envp[]); +/* low-level api */ +int pe_read_dos_header (struct pe_image_dos_hdr * p, struct pe_meta_image_dos_hdr * m); +int pe_read_coff_header (struct pe_coff_file_hdr * p, struct pe_meta_coff_file_hdr * m); +int pe_read_optional_header (union pe_opt_hdr * p, struct pe_meta_opt_hdr * m); +int pe_read_section_header (struct pe_sec_hdr * p, struct pe_meta_sec_hdr * m); +int pe_read_export_header (struct pe_export_hdr * p, struct pe_meta_export_hdr * m); #endif - -- cgit v1.2.3