1 /* radare - LGPL - Copyright 2015 nodepad */ 2 3 #ifndef MZ_H 4 #define MZ_H 5 6 #include <r_types.h> 7 #include <r_list.h> 8 #include <r_util.h> 9 #include <r_bin.h> 10 #include "mz_specs.h" 11 12 struct r_bin_mz_segment_t { 13 ut64 paddr; 14 ut64 vaddr; 15 ut64 size; 16 int last; 17 }; 18 19 struct r_bin_mz_reloc_t { 20 ut64 paddr; 21 ut64 vaddr; 22 int last; 23 }; 24 25 struct r_bin_mz_obj_t { 26 const MZ_image_dos_header *dos_header; 27 const void *dos_extended_header; 28 MZ_image_relocation_entry *relocation_entries; 29 30 int dos_extended_header_size; 31 32 int size; 33 int dos_file_size; /* Size of dos file from dos executable header */ 34 int load_module_size; /* Size of load module: dos_file_size - header size */ 35 const char *file; 36 RBuffer *b; 37 Sdb *kv; 38 }; 39 40 RBinAddr *r_bin_mz_get_entrypoint (const struct r_bin_mz_obj_t *bin); 41 RList *r_bin_mz_get_segments (const struct r_bin_mz_obj_t *bin); 42 struct r_bin_mz_reloc_t *r_bin_mz_get_relocs (const struct r_bin_mz_obj_t *bin); 43 void *r_bin_mz_free (struct r_bin_mz_obj_t *bin); 44 struct r_bin_mz_obj_t *r_bin_mz_new (const char *file); 45 struct r_bin_mz_obj_t *r_bin_mz_new_buf(RBuffer *buf); 46 RBinAddr *r_bin_mz_get_main_vaddr (struct r_bin_mz_obj_t *bin); 47 48 #endif 49