Ejemplo n.º 1
0
    def __init__(self, func):
        self.src = func
        ea = func.startEA
        self.ea = ea
        self.name = idaapi.get_func_name(ea)

        self.elts = []

        if idaapi.is_func_tail(func):
            self.name += "_tail_" + str(ea)

        fr = idaapi.get_frame(func)
        struc_vars = []
        if fr == None:
            self.frame = None
        else:
            self.frame = struct.frame_node(fr, func)
            struc_vars = self.frame.struct_vars

        while ea < func.endEA:
            if idaapi.isData(idaapi.getFlags(ea)):
                self.elts.append(data.data_node(ea, idaapi.next_not_tail(ea)))
            else:
                if ea == func.startEA and not (idaapi.is_func_tail(func)):
                    self.elts.append(insn.insn_node(ea, struc_vars))
                else:
                    self.elts.append(
                        names.name_wrap_insn(ea,
                                             insn.insn_node(ea, struc_vars)))

            ea = idaapi.next_head(ea, func.endEA)
Ejemplo n.º 2
0
    def __init__(self, func):
        self.src = func
        ea = func.startEA
        self.ea = ea
        self.name = idaapi.get_func_name(ea)

        self.elts = []

        if idaapi.is_func_tail(func):
            self.name += "_tail_"+str(ea)

        fr = idaapi.get_frame(func)
        struc_vars = []
        if fr == None:
            self.frame = None
        else:
            self.frame = struct.frame_node(fr, func)
            struc_vars = self.frame.struct_vars

        while ea < func.endEA:
            if idaapi.isData(idaapi.getFlags(ea)):
                self.elts.append(data.data_node(ea, idaapi.next_not_tail(ea)))
            else:
                if ea == func.startEA and not (idaapi.is_func_tail(func)):
                    self.elts.append(insn.insn_node(ea, struc_vars))
                else:
                    self.elts.append(names.name_wrap_insn(ea, insn.insn_node(ea, struc_vars)))

            ea = idaapi.next_head(ea, func.endEA)
Ejemplo n.º 3
0
    def __init__(self, seg):

        self.content = None

        self.segclass = idaapi.get_segm_class(seg)
        self.name = idaapi.get_segm_name(seg)
        
        self.content = data.data_node(seg.startEA, seg.endEA)
Ejemplo n.º 4
0
    def __init__(self, seg):

        self.content = None

        self.segclass = idaapi.get_segm_class(seg)
        self.name = idaapi.get_segm_name(seg)

        self.content = data.data_node(seg.startEA, seg.endEA)
Ejemplo n.º 5
0
    def __init__(self, low, high):
        self.elts = []
        for i in range(idaapi.get_fchunk_qty()):
            f = idaapi.getn_fchunk(i)
            if f.startEA >= low and f.endEA <= high:
                self.elts.append(function_node(f))

            datalow = f.endEA
            nextchunk = idaapi.getn_fchunk(i + 1)
            if datalow != idaapi.BADADDR and not (nextchunk is None):
                datahigh = nextchunk.startEA
                if datahigh != idaapi.BADADDR:
                    self.elts.append(data.data_node(datalow, datahigh))
Ejemplo n.º 6
0
 def __init__(self, low, high):
     self.elts = []
     for i in range(idaapi.get_fchunk_qty()):
         f = idaapi.getn_fchunk(i)
         if f.startEA >= low and f.endEA <= high:
             self.elts.append(function_node(f))
             
         datalow = f.endEA
         nextchunk = idaapi.getn_fchunk(i+1)
         if datalow != idaapi.BADADDR and not (nextchunk is None):
             datahigh = nextchunk.startEA
             if datahigh != idaapi.BADADDR:
                 self.elts.append(data.data_node(datalow, datahigh))