miasm
Reverse engineering framework
|
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 | |
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.
def miasm.analysis.ssa.SSA.__init__ | ( | self, | |
ircfg | |||
) |
Initialises generic class for SSA :param ircfg: instance of IRCFG
Reimplemented in miasm.analysis.ssa.SSADiGraph.
def miasm.analysis.ssa.SSA.get_block | ( | self, | |
loc_key | |||
) |
Returns an IRBlock :param loc_key: LocKey instance :return: IRBlock
def miasm.analysis.ssa.SSA.get_regs | ( | self, | |
expr | |||
) |
def miasm.analysis.ssa.SSA.reset | ( | self | ) |
Resets SSA transformation
Reimplemented in miasm.analysis.ssa.SSADiGraph.
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
def miasm.analysis.ssa.SSA.transform | ( | self, | |
* | args, | ||
** | kwargs | ||
) |
Transforms into SSA
miasm.analysis.ssa.SSA.expressions |
miasm.analysis.ssa.SSA.immutable_ids |
miasm.analysis.ssa.SSA.ircfg |
miasm.analysis.ssa.SSA.ssa_to_location |
miasm.analysis.ssa.SSA.ssa_variable_to_expr |