Esempio n. 1
0
    def __init__(self, size, offset, name=None):
        AbstractMember.__init__(self, offset)
        self.name = name if name else "gap_{0:X}".format(self.offset)

        if size == 1:
            self.tinfo = const.BYTE_TINFO
        else:
            array_data = idaapi.array_type_data_t()
            array_data.base = 0
            array_data.elem_type = const.BYTE_TINFO
            array_data.nelems = size
            self.tinfo = idaapi.tinfo_t()
            self.tinfo.create_array(array_data)
Esempio n. 2
0
    def __init__(self, type):

        self.logger = logging.getLogger(__name__)

        self.type_info = type
        self.array_type_data = idaapi.array_type_data_t()

        self.element_type = None
        self.element_num = 0
        self.element_size = 0

        self.elements = []

        # Extract array data
        self.get_array_data()
Esempio n. 3
0
    def __init__(self, type):

        self.logger = logging.getLogger(__name__)

        self.type_info = type
        self.array_type_data = idaapi.array_type_data_t()

        self.element_type = None
        self.element_num = 0
        self.element_size = 0

        self.elements = []

        # Extract array data
        self.get_array_data()
Esempio n. 4
0
def create_padding_udt_member(offset, size):
    # type: (long, long) -> idaapi.udt_member_t
    """ Creates internal IDA structure with name gap_XXX and appropriate size and offset """

    udt_member = idaapi.udt_member_t()
    udt_member.name = "gap_{0:X}".format(offset)
    udt_member.offset = offset
    udt_member.size = size

    if size == 1:
        udt_member.type = const.BYTE_TINFO
    else:
        array_data = idaapi.array_type_data_t()
        array_data.base = 0
        array_data.elem_type = const.BYTE_TINFO
        array_data.nelems = size
        tmp_tinfo = idaapi.tinfo_t()
        tmp_tinfo.create_array(array_data)
        udt_member.type = tmp_tinfo
    return udt_member
Esempio n. 5
0
    def get_padding_member(offset, size):
        udt_member = idaapi.udt_member_t()
        if size == 1:
            udt_member.name = "gap_{0:X}".format(offset)
            udt_member.type = Const.BYTE_TINFO
            udt_member.size = Const.BYTE_TINFO.get_size()
            udt_member.offset = offset
            return udt_member

        array_data = idaapi.array_type_data_t()
        array_data.base = 0
        array_data.elem_type = Const.BYTE_TINFO
        array_data.nelems = size
        tmp_tinfo = idaapi.tinfo_t()
        tmp_tinfo.create_array(array_data)

        udt_member.name = "gap_{0:X}".format(offset)
        udt_member.type = tmp_tinfo
        udt_member.size = size
        udt_member.offset = offset
        return udt_member
Esempio n. 6
0
def create_padding_udt_member(offset, size):
    # type: (long, long) -> idaapi.udt_member_t
    """ Creates internal IDA structure with name gap_XXX and appropriate size and offset """

    udt_member = idaapi.udt_member_t()
    udt_member.name = "gap_{0:X}".format(offset)
    udt_member.offset = offset
    udt_member.size = size

    if size == 1:
        udt_member.type = const.BYTE_TINFO
    else:
        if size < 1 or size > 0xffffffff:
            print(
                "HexRaysPyTools::core::helper::create_padding_udt_member: size is out of uint32 range (offset:{} size:{})"
                .format(offset, size))
        array_data = idaapi.array_type_data_t()
        array_data.base = 0
        array_data.elem_type = const.BYTE_TINFO
        array_data.nelems = size
        tmp_tinfo = idaapi.tinfo_t()
        tmp_tinfo.create_array(array_data)
        udt_member.type = tmp_tinfo
    return udt_member
Esempio n. 7
0
def array_details(ti):
    if ti.is_array() is False:
        raise NotArrayError('ti is not an array')
    ai = idaapi.array_type_data_t()
    ti.get_array_details(ai)
    return ai
Esempio n. 8
0
def array_details(ti):
    if ti.is_array() is False:
        raise NotArrayError('ti is not an array')
    ai = idaapi.array_type_data_t()
    ti.get_array_details(ai)
    return ai