Example #1
0
def iterate():
    """Iterate through all structures defined in the database"""
    idx = idaapi.get_first_struc_idx()
    while idx != idaapi.get_last_struc_idx():
        identifier = idaapi.get_struc_by_idx(idx)
        yield instance(identifier)
        idx = idaapi.get_next_struc_idx(idx)
    idx = idaapi.get_last_struc_idx()
    yield instance(idaapi.get_struc_by_idx(idx))
Example #2
0
def by_index(index, **options):
    '''Return a structure by it's index.'''
    id = idaapi.get_struc_by_idx(index)
    if id == idaapi.BADADDR:
        raise IndexError(
            "{:s}.by_index({:d}) : Unable to locate structure at given index.".
            format(__name__, index))
    return instance(id, **options)
Example #3
0
def loadStructs():
    idx = idaapi.get_first_struc_idx()
    existingStructs = []
    while idx != idc.BADADDR:
        tid = idaapi.get_struc_by_idx(idx)
        existingStructs.append(idaapi.get_struc_name(tid))
        idx = idaapi.get_next_struc_idx(idx)
    existingStructs.sort()
    return existingStructs
Example #4
0
def loadStructs():
    idx = idaapi.get_first_struc_idx()
    existingStructs = []
    while idx != idc.BADADDR:
        tid = idaapi.get_struc_by_idx(idx)
        existingStructs.append(idaapi.get_struc_name(tid))
        idx = idaapi.get_next_struc_idx(idx)
    existingStructs.sort()
    return existingStructs
Example #5
0
def foreachStructureNameAndSize(struct_iterator, *additionalArgs):
    assertFunction(struct_iterator)
    first = int(getFirstStructIdx())
    last = int(getLastStructIdx())
    for i in range(first, last):
        sid = idaapi.get_struc_by_idx(i)
        if not struct_iterator(idaapi.get_struc_name(sid),
                               idaapi.get_struc_size(sid), *additionalArgs):
            break
Example #6
0
def handle_structs(delta, segs):
    for idx in range(idaapi.get_struc_qty()):
        tid = idaapi.get_struc_by_idx(idx)
        for cmt_type in (True, False):
            cmt = idaapi.get_struc_cmt(tid, cmt_type)
            if cmt:
                new_cmt = rebase_comment(segs, delta, cmt)
                if new_cmt:
                    idaapi.set_struc_cmt(tid, new_cmt, cmt_type)
        s = idaapi.get_struc(tid)
        for midx in range(s.memqty):
            m = s.get_member(midx)
            for cmt_type in (True, False):
                cmt = idaapi.get_member_cmt(m.id, cmt_type)
                if cmt:
                    new_cmt = rebase_comment(segs, delta, cmt)
                    if new_cmt:
                        idaapi.set_member_cmt(m, new_cmt, cmt_type)
Example #7
0
def byIndex(index, **options):
    """Return a structure by it's index"""
    id = idaapi.get_struc_by_idx(index)
    if id == idaapi.BADADDR:
        raise IndexError, 'Unable to locate structure #{:d}'.format(index)
    return instance(id, **options)
Example #8
0
 def __getitem__(self, idx):
     s = idaapi.get_struc_by_idx(idx)
     return idastruct(s) if s != idc.BADADDR else None
Example #9
0
def getStructIdFromIdx(idx):
    return idaapi.get_struc_by_idx(idx)
Example #10
0
 def __init__(self):
     self.elts = []
     for i in range(idaapi.get_struc_qty()):
         self.elts.append(
             struct_node(idaapi.get_struc(idaapi.get_struc_by_idx(i))))
Example #11
0
 def __init__(self):
     self.elts = []
     for i in range(idaapi.get_struc_qty()):
         self.elts.append(struct_node(idaapi.get_struc(idaapi.get_struc_by_idx(i))))