Python idaapi.dt_dword() Examples
The following are 3
code examples of idaapi.dt_dword().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
idaapi
, or try the search function
.
Example #1
Source File: _interface.py From ida-minsc with BSD 3-Clause "New" or "Revised" License | 5 votes |
def by_indextype(self, index, dtype): """Lookup a register according to its `index` and `dtype`. Some examples of dtypes: idaapi.dt_byte, idaapi.dt_word, idaapi.dt_dword, idaapi.dt_qword """ res = idaapi.ph.regnames[index] name = self.__cache__[res, dtype] return getattr(self.__register__, name)
Example #2
Source File: processor.py From idawasm with Apache License 2.0 | 5 votes |
def dt_to_width(self, dt): ''' returns OOFW_xxx flag given a dt_xxx ''' return { idaapi.dt_byte: idaapi.OOFW_8, idaapi.dt_word: idaapi.OOFW_16, idaapi.dt_dword: idaapi.OOFW_32, idaapi.dt_qword: idaapi.OOFW_64, }[dt]
Example #3
Source File: collect_classes.py From ida_kernelcache with MIT License | 4 votes |
def _emulate_arm64(start, end, on_BL=None, on_RET=None): """A very basic partial Arm64 emulator that does just enough to find OSMetaClass information.""" # Super basic emulation. reg = _Regs() def load(addr, dtyp): if not addr: return None if dtyp == idaapi.dt_qword: size = 8 elif dtyp == idaapi.dt_dword: size = 4 else: return None return idau.read_word(addr, size) def cleartemps(): for t in ['X{}'.format(i) for i in range(0, 19)]: reg.clear(t) for insn in idau.Instructions(start, end): _log(11, 'Processing instruction {:#x}', insn.ea) mnem = insn.get_canon_mnem() if mnem == 'ADRP' or mnem == 'ADR': reg[insn.Op1.reg] = insn.Op2.value elif mnem == 'ADD' and insn.Op2.type == idc.o_reg and insn.Op3.type == idc.o_imm: reg[insn.Op1.reg] = reg[insn.Op2.reg] + insn.Op3.value elif mnem == 'NOP': pass elif mnem == 'MOV' and insn.Op2.type == idc.o_imm: reg[insn.Op1.reg] = insn.Op2.value elif mnem == 'MOV' and insn.Op2.type == idc.o_reg: reg[insn.Op1.reg] = reg[insn.Op2.reg] elif mnem == 'RET': if on_RET: on_RET(reg) break elif (mnem == 'STP' or mnem == 'LDP') and insn.Op3.type == idc.o_displ: if insn.auxpref & _MEMOP_WBINDEX: reg[insn.Op3.reg] = reg[insn.Op3.reg] + insn.Op3.addr if mnem == 'LDP': reg.clear(insn.Op1.reg) reg.clear(insn.Op2.reg) elif (mnem == 'STR' or mnem == 'LDR') and not insn.auxpref & _MEMOP_WBINDEX: if mnem == 'LDR': if insn.Op2.type == idc.o_displ: reg[insn.Op1.reg] = load(reg[insn.Op2.reg] + insn.Op2.addr, insn.Op1.dtyp) else: reg.clear(insn.Op1.reg) elif mnem == 'BL' and insn.Op1.type == idc.o_near: if on_BL: on_BL(insn.Op1.addr, reg) cleartemps() else: _log(10, 'Unrecognized instruction at address {:#x}', insn.ea) reg.clearall()