miasm
Reverse engineering framework
miasm.analysis.depgraph.DependencyResult Class Reference
Inheritance diagram for miasm.analysis.depgraph.DependencyResult:
Collaboration diagram for miasm.analysis.depgraph.DependencyResult:

Public Member Functions

def __init__ (self, ircfg, initial_state, state, inputs)
 
def unresolved (self)
 
def relevant_nodes (self)
 
def relevant_loc_keys (self)
 
def has_loop (self)
 
def irblock_slice (self, irb, max_line=None)
 
def emul (self, ir_arch, ctx=None, step=False)
 
- Public Member Functions inherited from miasm.analysis.depgraph.DependencyState
def __init__ (self, loc_key, pending, line_nb=None)
 
def __repr__ (self)
 
def extend (self, loc_key)
 
def get_done_state (self)
 
def as_graph (self)
 
def graph (self)
 
def remove_pendings (self, nodes)
 
def add_pendings (self, future_pending)
 
def link_element (self, element, line_nb)
 
def link_dependencies (self, element, line_nb, dependencies, future_pending)
 

Public Attributes

 initial_state
 
 history
 
 pending
 
 line_nb
 
 inputs
 
 links
 
- Public Attributes inherited from miasm.analysis.depgraph.DependencyState
 loc_key
 
 history
 
 pending
 
 line_nb
 
 links
 

Detailed Description

Container and methods for DependencyGraph results

Constructor & Destructor Documentation

◆ __init__()

def miasm.analysis.depgraph.DependencyResult.__init__ (   self,
  ircfg,
  initial_state,
  state,
  inputs 
)

Member Function Documentation

◆ emul()

def miasm.analysis.depgraph.DependencyResult.emul (   self,
  ir_arch,
  ctx = None,
  step = False 
)
Symbolic execution of relevant nodes according to the history
Return the values of inputs nodes' elements
@ir_arch: IntermediateRepresentation instance
@ctx: (optional) Initial context as dictionary
@step: (optional) Verbose execution
Warning: The emulation is not sound if the inputs nodes depend on loop
variant.

Reimplemented in miasm.analysis.depgraph.DependencyResultImplicit.

Here is the call graph for this function:

◆ has_loop()

def miasm.analysis.depgraph.DependencyResult.has_loop (   self)
True iff there is at least one data dependencies cycle (regarding
the associated depgraph)
Here is the call graph for this function:

◆ irblock_slice()

def miasm.analysis.depgraph.DependencyResult.irblock_slice (   self,
  irb,
  max_line = None 
)
Slice of the dependency nodes on the irblock @irb
@irb: irbloc instance
Here is the call graph for this function:
Here is the caller graph for this function:

◆ relevant_loc_keys()

def miasm.analysis.depgraph.DependencyResult.relevant_loc_keys (   self)
List of loc_keys containing nodes influencing inputs.
The history order is preserved.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ relevant_nodes()

def miasm.analysis.depgraph.DependencyResult.relevant_nodes (   self)
Set of nodes directly and indirectly influencing inputs
Here is the caller graph for this function:

◆ unresolved()

def miasm.analysis.depgraph.DependencyResult.unresolved (   self)
Set of nodes whose dependencies weren't found

Member Data Documentation

◆ history

miasm.analysis.depgraph.DependencyResult.history

◆ initial_state

miasm.analysis.depgraph.DependencyResult.initial_state

◆ inputs

miasm.analysis.depgraph.DependencyResult.inputs

◆ line_nb

miasm.analysis.depgraph.DependencyResult.line_nb

◆ links

miasm.analysis.depgraph.DependencyResult.links

◆ pending

miasm.analysis.depgraph.DependencyResult.pending

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