miasm
Reverse engineering framework
miasm.ir.analysis.ira Class Reference
Inheritance diagram for miasm.ir.analysis.ira:
Collaboration diagram for miasm.ir.analysis.ira:

Public Member Functions

def call_effects (self, addr, instr)
 
def add_instr_to_current_state (self, instr, block, assignments, ir_blocks_all, gen_pc_updt)
 
def sizeof_char (self)
 
def sizeof_short (self)
 
def sizeof_int (self)
 
def sizeof_long (self)
 
def sizeof_pointer (self)
 
- Public Member Functions inherited from miasm.ir.ir.IntermediateRepresentation
def __init__ (self, arch, attrib, loc_db)
 
def get_ir (self, instr)
 
def new_ircfg (self, *args, **kwargs)
 
def new_ircfg_from_asmcfg (self, asmcfg, *args, **kwargs)
 
def instr2ir (self, instr)
 
def add_instr_to_ircfg (self, instr, ircfg, loc_key=None, gen_pc_updt=False)
 
def gen_pc_update (self, assignments, instr)
 
def add_asmblock_to_ircfg (self, block, ircfg, gen_pc_updt=False)
 
def add_block (self, block, gen_pc_updt=False)
 
def add_bloc (self, block, gen_pc_updt=False)
 
def get_next_loc_key (self, instr)
 
def get_loc_key_for_instr (self, instr)
 
def gen_loc_key_and_expr (self, size)
 
def expr_fix_regs_for_mode (self, expr, *args, **kwargs)
 
def expraff_fix_regs_for_mode (self, expr, *args, **kwargs)
 
def irbloc_fix_regs_for_mode (self, irblock, *args, **kwargs)
 
def is_pc_written (self, block)
 
def set_empty_dst_to_next (self, block, ir_blocks)
 
def post_add_asmblock_to_ircfg (self, block, ircfg, ir_blocks)
 

Static Public Attributes

 ret_reg = None
 

Additional Inherited Members

- Public Attributes inherited from miasm.ir.ir.IntermediateRepresentation
 pc
 
 sp
 
 arch
 
 attrib
 
 loc_db
 
 IRDst
 

Detailed Description

IR Analysis
This class provides higher level manipulations on IR, such as dead
instruction removals.

This class can be used as a common parent with
`miasm.ir.ir::IntermediateRepresentation` class.

For instance:
    class ira_x86_16(ir_x86_16, ira)

Member Function Documentation

◆ add_instr_to_current_state()

def miasm.ir.analysis.ira.add_instr_to_current_state (   self,
  instr,
  block,
  assignments,
  ir_blocks_all,
  gen_pc_updt 
)
Add the IR effects of an instruction to the current state.
If the instruction is a function call, replace the original IR by a
model of the sub function

Returns a bool:
* True if the current assignments list must be split
* False in other cases.

@instr: native instruction
@block: native block source
@assignments: current irbloc
@ir_blocks_all: list of additional effects
@gen_pc_updt: insert PC update effects between instructions

Reimplemented from miasm.ir.ir.IntermediateRepresentation.

Reimplemented in miasm.arch.ppc.ira.ir_a_ppc32b.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ call_effects()

def miasm.ir.analysis.ira.call_effects (   self,
  addr,
  instr 
)
Default modelisation of a function call to @addr. This may be used to:

* insert dependencies to arguments (stack base, registers, ...)
* add some side effects (stack clean, return value, ...)

Return a couple:
* list of assignments to add to the current irblock
* list of additional irblocks

@addr: (Expr) address of the called function
@instr: native instruction which is responsible of the call

Reimplemented in miasm.arch.msp430.ira.ir_a_msp430_base, miasm.arch.x86.ira.ir_a_x86_64, miasm.arch.ppc.ira.ir_a_ppc32b, miasm.arch.mips32.ira.ir_a_mips32l, and miasm.arch.arm.ira.ir_a_arml.

Here is the caller graph for this function:

◆ sizeof_char()

◆ sizeof_int()

◆ sizeof_long()

◆ sizeof_pointer()

◆ sizeof_short()

Member Data Documentation

◆ ret_reg

miasm.ir.analysis.ira.ret_reg = None
static

The documentation for this class was generated from the following file: