def _get_user_labels(ea): user_labels = ida_hexrays.restore_user_labels(ea) if user_labels is None: user_labels = ida_hexrays.user_labels_new() labels = [] it = ida_hexrays.user_labels_begin(user_labels) while it != ida_hexrays.user_labels_end(user_labels): org_label = ida_hexrays.user_labels_first(it) name = ida_hexrays.user_labels_second(it) labels.append((org_label, Event.decode(name))) it = ida_hexrays.user_labels_next(it) ida_hexrays.user_labels_free(user_labels) return labels
def get_user_define(ea): ret = {} labels = ida_hexrays.restore_user_labels(ea) if labels is not None: arr = [] it = ida_hexrays.user_labels_begin(labels) while it != ida_hexrays.user_labels_end(labels): org_label = ida_hexrays.user_labels_first(it) name = ida_hexrays.user_labels_second(it) arr.append((org_label, name.encode("hex"))) it = ida_hexrays.user_labels_next(it) ret["labels"] = arr ida_hexrays.user_labels_free(labels) cmts = ida_hexrays.restore_user_cmts(ea) if cmts is not None: arr = [] for tl, cmt in cmts.iteritems(): arr.append((tl.ea, tl.itp, str(cmt).encode("hex"))) ret["cmts"] = arr ida_hexrays.user_cmts_free(cmts) iflags = ida_hexrays.restore_user_iflags(ea) if iflags is not None: arr = [] for cl, f in iflags.iteritems(): arr.append((cl.ea, cl.op, f)) ret["iflags"] = arr ida_hexrays.user_iflags_free(iflags) numforms = ida_hexrays.restore_user_numforms(ea) if numforms is not None: arr = [] for ol, nf in numforms.iteritems(): arr.append((ol.ea, ol.opnum, nf.flags, nf.opnum, nf.props, nf.serial, nf.org_nbytes, nf.type_name)) ret["numforms"] = arr ida_hexrays.user_numforms_free(numforms) lvars = _get_user_lvar_settings(ea) if lvars: ret["lvars"] = lvars return ret