arm Package

arm Package

The initial arm module.

class envi.archs.arm.ArmModule[source]

Bases: envi.ArchitectureModule

archGetBreakInstr()[source]
archGetRegCtx()[source]
getEmulator()[source]
getPointerSize()[source]
makeOpcode(bytes, offset=0, va=0)[source]

Parse a sequence of bytes out into an envi.Opcode instance.

pointerString(va)[source]
setModeThumb()[source]

armdisasm Module

class envi.archs.arm.armdisasm.ArmCoprocOpcodeOper(val)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmCoprocOper(val)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmCoprocRegOper(val, shtype=None, shval=None)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmEndianOper(val, shval=0, shtype=3)[source]

Bases: envi.archs.arm.armdisasm.ArmImmOper

getOperValue(op, emu=None)[source]
involvesPC()[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmImmOffsetOper(base_reg, offset, va, pubwl=8)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
render(mcanv, op, idx)[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmImmOper(val, shval=0, shtype=3)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
render(mcanv, op, idx)[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmOffsetOper(val, va)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
render(mcanv, op, idx)[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmOpcode(va, opcode, mnem, prefixes, size, operands, iflags=0)[source]

Bases: envi.Opcode

getBranches(emu=None)[source]

Return a list of tuples. Each tuple contains the target VA of the branch, and a possible set of flags showing what type of branch it is.

See the BR_FOO types for all the supported envi branch flags.... Example: for bva,bflags in op.getBranches():

render(mcanv)[source]

Render this opcode to the specified memory canvas

class envi.archs.arm.armdisasm.ArmPSRFlagsOper(flags)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmPgmStatFlagsOper(val)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmPgmStatRegOper(val)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmRegListOper(val, oflags=0)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
render(mcanv, op, idx)[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmRegOffsetOper(base_reg, offset_reg, va, pubwl=0)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
render(mcanv, op, idx)[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmRegOper(reg, oflags=0)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
render(mcanv, op, idx)[source]
repr(op)[source]
setOperValue(op, emu=None, val=None)[source]
class envi.archs.arm.armdisasm.ArmRegShiftImmOper(reg, shtype, shimm)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
render(mcanv, op, idx)[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmRegShiftRegOper(reg, shtype, shreg)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
render(mcanv, op, idx)[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmScaledOffsetOper(base_reg, offset_reg, shtype, shval, va, pubwl=0)[source]

Bases: envi.Operand

getOperValue(op, emu=None)[source]
involvesPC()[source]
render(mcanv, op, idx)[source]
repr(op)[source]
class envi.archs.arm.armdisasm.ArmStdDisasm[source]
checkSetMode(op)[source]
disasm(bytes, offset, va, trackMode=False)[source]

Parse a sequence of bytes out into an envi.Opcode instance.

envi.archs.arm.armdisasm.addrToName(mcanv, va)[source]
envi.archs.arm.armdisasm.chopmul(opcode)[source]
envi.archs.arm.armdisasm.dpbase(opval)[source]

Parse and return opcode,sflag,Rn,Rd for a standard dataprocessing instruction.

envi.archs.arm.armdisasm.instrenc(encoding, index)[source]
envi.archs.arm.armdisasm.p_arch_undef(opval, va)[source]
envi.archs.arm.armdisasm.p_branch(opval, va)[source]
envi.archs.arm.armdisasm.p_coproc_dbl_reg_xfer(opval, va)[source]
envi.archs.arm.armdisasm.p_coproc_dp(opval, va)[source]
envi.archs.arm.armdisasm.p_coproc_load(opval, va)[source]
envi.archs.arm.armdisasm.p_coproc_reg_xfer(opval, va)[source]
envi.archs.arm.armdisasm.p_dp_imm(opval, va)[source]
envi.archs.arm.armdisasm.p_dp_imm_shift(opval, va)[source]
envi.archs.arm.armdisasm.p_dp_reg_shift(opval, va)[source]
envi.archs.arm.armdisasm.p_extra_load_store(opval, va)[source]
envi.archs.arm.armdisasm.p_load_imm_off(opval, va)[source]
envi.archs.arm.armdisasm.p_load_mult(opval, va)[source]
envi.archs.arm.armdisasm.p_load_reg_off(opval, va)[source]
envi.archs.arm.armdisasm.p_media(opval, va)[source]

27:20, 7:4

envi.archs.arm.armdisasm.p_media_pack_sat_rev_extend(opval, va)[source]
envi.archs.arm.armdisasm.p_media_parallel(opval, va)[source]
envi.archs.arm.armdisasm.p_media_smul(opval, va)[source]
envi.archs.arm.armdisasm.p_media_usada(opval, va)[source]
envi.archs.arm.armdisasm.p_misc(opval, va)[source]
envi.archs.arm.armdisasm.p_misc1(opval, va)[source]
envi.archs.arm.armdisasm.p_mov_imm_stat(opval, va)[source]
envi.archs.arm.armdisasm.p_mult(opval, va)[source]
envi.archs.arm.armdisasm.p_swint(opval, va)[source]
envi.archs.arm.armdisasm.p_uncond(opval, va)[source]
envi.archs.arm.armdisasm.p_undef(opval, va)[source]
envi.archs.arm.armdisasm.sh_asr(num, shval)[source]
envi.archs.arm.armdisasm.sh_lsl(num, shval)[source]
envi.archs.arm.armdisasm.sh_lsr(num, shval)[source]
envi.archs.arm.armdisasm.sh_ror(num, shval)[source]
envi.archs.arm.armdisasm.sh_rrx(num, shval, emu=None)[source]

const Module

disasm Module

class envi.archs.arm.disasm.ArmDisasm[source]
disasm(bytes, offset, va, trackMode=True, mode=None)[source]
setMode(mode_num)[source]
class envi.archs.arm.disasm.ArmJazDisasm[source]
disasm(bytes, offset, va, trackMode=True)[source]

emu Module

The initial arm module.

class envi.archs.arm.emu.ArmArchitectureProcedureCall[source]

Bases: envi.CallingConvention

Implement calling conventions for your arch.

getCallArgs(emu, count)[source]
setReturnValue(emu, value, ccinfo=None)[source]
class envi.archs.arm.emu.ArmEmulator[source]

Bases: envi.archs.arm.ArmModule, envi.archs.arm.regs.ArmRegisterContext, envi.Emulator

doPop()[source]
doPush(val)[source]
executeOpcode(op)[source]
getCPSR()[source]
getFlag(which, mode=16)[source]
getProcMode()[source]
getRegister(index, mode=None)[source]

Return the current value of the specified register index.

getSPSR(mode)[source]
i_add(op)[source]
i_and(op)[source]
i_b(op)[source]
i_bl(op)[source]
i_cdp(op)[source]
i_eor(op)[source]
i_ldc(op)[source]
i_ldm(op)[source]
i_ldmia(op)
i_ldr(op)[source]
i_mcr(op)[source]
i_mcrr(op)[source]
i_mrc(op)[source]
i_mrrc(op)[source]
i_rsb(op)[source]
i_stc(op)[source]
i_stm(op)[source]
i_stmia(op)
i_sub(op)[source]
i_tst(op)[source]
intSubBase(src1, src2, Sflag=0, rd=0)[source]
integerSubtraction(op)[source]

Do the core of integer subtraction but only return the resulting value rather than assigning it. (allows cmp and sub to use the same code)

logicalAnd(op)[source]
readMemSignedValue(addr, size)[source]
readMemValue(addr, size)[source]
setCPSR(psr)[source]
setFlag(which, state, mode=16)[source]
setProcMode(mode)[source]
setRegister(index, value, mode=None)[source]

Set a register value by index.

setSPSR(mode, psr)[source]
undefFlags()[source]

Used in PDE. A flag setting operation has resulted in un-defined value. Set the flags to un-defined as well.

writeMemValue(addr, value, size)[source]
class envi.archs.arm.emu.CoProcEmulator[source]
cdp(parms)[source]
ldc(parms)[source]
mcr(parms)[source]
mcrr(parms)[source]
mrc(parms)[source]
mrrc(parms)[source]
stc(parms)[source]

regs Module

class envi.archs.arm.regs.ArmRegisterContext[source]

Bases: envi.registers.RegisterContext

thumb Module

thumbdisasm Module

class envi.archs.arm.thumbdisasm.ArmThumbDisasm[source]
disasm(bytes, offset, va, trackMode=True)[source]
class envi.archs.arm.thumbdisasm.ThumbOpcode(va, opcode, mnem, prefixes, size, operands, iflags=0)[source]

Bases: envi.archs.arm.armdisasm.ArmOpcode

envi.archs.arm.thumbdisasm.d1_rm4_rd3(va, value)[source]
envi.archs.arm.thumbdisasm.imm5_rn_rt(va, value)[source]
envi.archs.arm.thumbdisasm.is_thumb32(val)[source]

Take a 16 bit integer (opcode) value and determine if it is really the first 16 bits of a 32 bit instruction.

envi.archs.arm.thumbdisasm.ldmia(va, value)[source]
envi.archs.arm.thumbdisasm.rd_pc_imm8(va, value)[source]
envi.archs.arm.thumbdisasm.rd_sp_imm8(va, value)[source]
envi.archs.arm.thumbdisasm.rm_reglist(va, value)[source]
envi.archs.arm.thumbdisasm.rm_rn_rt(va, value)[source]
envi.archs.arm.thumbdisasm.rt_pc_imm8(va, value)[source]
envi.archs.arm.thumbdisasm.shmaskval(value, shval, mask)[source]
class envi.archs.arm.thumbdisasm.simpleops(*operdef)[source]
envi.archs.arm.thumbdisasm.sp_sp_imm7(va, value)[source]

Table Of Contents

This Page