예제 #1
0
파일: hooks.py 프로젝트: rigmar/IDArling
 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
예제 #2
0
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