miasm
Reverse engineering framework
miasm.analysis.ssa.SSA Class Reference
Inheritance diagram for miasm.analysis.ssa.SSA:
Collaboration diagram for miasm.analysis.ssa.SSA:

Public Member Functions

def __init__ (self, ircfg)
 
def get_regs (self, expr)
 
def transform (self, *args, **kwargs)
 
def get_block (self, loc_key)
 
def reverse_variable (self, ssa_var)
 
def reset (self)
 

Public Attributes

 ircfg
 
 ssa_variable_to_expr
 
 expressions
 
 ssa_to_location
 
 immutable_ids
 

Detailed Description

Generic class for static single assignment (SSA) transformation

Handling of
- variable generation
- variable renaming
- conversion of an IRCFG block into SSA

Variables will be renamed to <variable>.<index>, whereby the
index will be increased in every definition of <variable>.

Memory expressions are stateless. The addresses are in SSA form,
but memory aliasing will occur. For instance, if it holds
that RAX == RBX.0 + (-0x8) and

@64[RBX.0 + (-0x8)] = RDX
RCX.0 = @64[RAX],

then it cannot be tracked that RCX.0 == RDX.

Constructor & Destructor Documentation

◆ __init__()

def miasm.analysis.ssa.SSA.__init__ (   self,
  ircfg 
)
Initialises generic class for SSA
:param ircfg: instance of IRCFG

Reimplemented in miasm.analysis.ssa.SSADiGraph.

Member Function Documentation

◆ get_block()

def miasm.analysis.ssa.SSA.get_block (   self,
  loc_key 
)
Returns an IRBlock
:param loc_key: LocKey instance
:return: IRBlock
Here is the caller graph for this function:

◆ get_regs()

def miasm.analysis.ssa.SSA.get_regs (   self,
  expr 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ reset()

def miasm.analysis.ssa.SSA.reset (   self)
Resets SSA transformation

Reimplemented in miasm.analysis.ssa.SSADiGraph.

Here is the call graph for this function:

◆ reverse_variable()

def miasm.analysis.ssa.SSA.reverse_variable (   self,
  ssa_var 
)
Transforms a variable in SSA form into non-SSA form
:param ssa_var: ExprId, variable in SSA form
:return: ExprId, variable in non-SSA form
Here is the caller graph for this function:

◆ transform()

def miasm.analysis.ssa.SSA.transform (   self,
args,
**  kwargs 
)
Transforms into SSA

Member Data Documentation

◆ expressions

miasm.analysis.ssa.SSA.expressions

◆ immutable_ids

miasm.analysis.ssa.SSA.immutable_ids

◆ ircfg

miasm.analysis.ssa.SSA.ircfg

◆ ssa_to_location

miasm.analysis.ssa.SSA.ssa_to_location

◆ ssa_variable_to_expr

miasm.analysis.ssa.SSA.ssa_variable_to_expr

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