def codeify(self, ea=idc.BADADDR): func_count = 0 code_count = 0 if ea == idc.BADADDR: ea = self.get_start_ea(self.CODE) if ea == idc.BADADDR: ea = ida_shims.get_first_seg() print("\nLooking for undefined code starting at: %s:0x%X" % \ (ida_shims.get_segm_name(ea), ea)) while ea != idc.BADADDR: try: if ida_shims.get_segm_attr(ea, idc.SEGATTR_TYPE) == self.CODE: if ida_shims.get_func_name(ea) != '': ea = ida_shims.find_func_end(ea) continue else: if ida_shims.add_func(ea): func_count += 1 elif ida_shims.create_insn(ea): code_count += 1 except: pass ea = ida_shims.next_addr(ea) print("Created %d new functions and %d new code blocks\n" % \ (func_count, code_count))
def datify(self): ea = self.get_start_ea(self.DATA) if ea == idc.BADADDR: ea = ida_shims.get_first_seg() print("Converting remaining data to DWORDs...", end=' ') while ea != idc.BADADDR: flags = ida_shims.get_full_flags(ea) if (ida_shims.is_unknown(flags) or ida_shims.is_byte(flags)) and \ ((ea % 4) == 0): ida_shims.create_dword(ea) ida_shims.op_plain_offset(ea, 0, 0) ea = ida_shims.next_addr(ea) print("done.") self._fix_data_offsets()