Exemplo n.º 1
0
 def load_image_fobj(self, fobj):
     """load a BinImage from a hunk file given via file obj"""
     # read the hunk blocks
     bf = HunkBlockFile()
     bf.read(fobj, isLoadSeg=True)
     # derive load seg file
     lsf = HunkLoadSegFile()
     lsf.parse_block_file(bf)
     # convert load seg file
     return self.create_image_from_load_seg_file(lsf)
Exemplo n.º 2
0
 def load_image_fobj(self, fobj):
     """load a BinImage from a hunk file given via file obj"""
     # read the hunk blocks
     bf = HunkBlockFile()
     bf.read(fobj, isLoadSeg=True)
     # derive load seg file
     lsf = HunkLoadSegFile()
     lsf.parse_block_file(bf)
     # convert load seg file
     return self.create_image_from_load_seg_file(lsf)
Exemplo n.º 3
0
 def create_load_seg_file_from_image(self, bin_img):
   """create a HunkLodSegFile from a BinImage"""
   lsf = HunkLoadSegFile()
   for seg in bin_img.segments:
     seg_type = seg.get_type()
     # create HunkSegment
     lseg = HunkSegment()
     lsf.add_segment(lseg)
     if seg_type == SEGMENT_TYPE_CODE:
       lseg.setup_code(seg.data)
     elif seg_type == SEGMENT_TYPE_DATA:
       lseg.setup_data(seg.data)
     elif seg_type == SEGMENT_TYPE_BSS:
       lseg.setup_bss(seg.size)
     else:
       raise HunkParseError("Unknown Segment Type in BinImage: %d" % seg_type)
     # add relocs
     self._add_bin_img_relocs(lseg, seg)
     # add symbols
     self._add_bin_img_symbols(lseg, seg)
     # add debug info
     self._add_bin_img_debug_info(lseg, seg)
   return lsf