miasm
Reverse engineering framework
miasm.core.graph.MatchGraph Class Reference
Inheritance diagram for miasm.core.graph.MatchGraph:
Collaboration diagram for miasm.core.graph.MatchGraph:

Public Member Functions

def __init__ (self, *args, **kwargs)
 
def __rshift__ (self, joker)
 
def __add__ (self, graph)
 
def match (self, graph)
 
- Public Member Functions inherited from miasm.core.graph.DiGraph
def __init__ (self)
 
def __repr__ (self)
 
def nodes (self)
 
def edges (self)
 
def merge (self, graph)
 
def copy (self)
 
def __eq__ (self, graph)
 
def __ne__ (self, other)
 
def add_node (self, node)
 
def del_node (self, node)
 
def add_edge (self, src, dst)
 
def add_uniq_edge (self, src, dst)
 
def del_edge (self, src, dst)
 
def discard_edge (self, src, dst)
 
def predecessors_iter (self, node)
 
def predecessors (self, node)
 
def successors_iter (self, node)
 
def successors (self, node)
 
def leaves_iter (self)
 
def leaves (self)
 
def heads_iter (self)
 
def heads (self)
 
def find_path (self, src, dst, cycles_count=0, done=None)
 
def find_path_from_src (self, src, dst, cycles_count=0, done=None)
 
def nodeid (self, node)
 
def node2lines (self, node)
 
def node_attr (self, node)
 
def edge_attr (self, src, dst)
 
def dot (self)
 
def predecessors_stop_node_iter (self, node, head)
 
def reachable_sons (self, head)
 
def reachable_parents (self, leaf)
 
def reachable_parents_stop_node (self, leaf, head)
 
def compute_dominators (self, head)
 
def compute_postdominators (self, leaf)
 
def compute_dominator_tree (self, head)
 
def walk_dominators (self, node, dominators)
 
def walk_postdominators (self, node, postdominators)
 
def compute_immediate_dominators (self, head)
 
def compute_immediate_postdominators (self, tail)
 
def compute_dominance_frontier (self, head)
 
def walk_breadth_first_forward (self, head)
 
def walk_depth_first_forward (self, head)
 
def walk_breadth_first_backward (self, head)
 
def walk_depth_first_backward (self, head)
 
def has_loop (self)
 
def compute_natural_loops (self, head)
 
def compute_back_edges (self, head)
 
def compute_strongly_connected_components (self)
 
def compute_weakly_connected_components (self)
 
def replace_node (self, node, new_node)
 

Additional Inherited Members

- Static Public Attributes inherited from miasm.core.graph.DiGraph
 DotCellDescription
 

Detailed Description

MatchGraph intends to be the counterpart of match_expr, but for DiGraph

This class provides API to match a given DiGraph pattern, with addidionnal
restrictions.
The implemented algorithm is a naive approach.

The recommended way to instantiate a MatchGraph is the use of
MatchGraphJoker.

Constructor & Destructor Documentation

◆ __init__()

def miasm.core.graph.MatchGraph.__init__ (   self,
args,
**  kwargs 
)

Member Function Documentation

◆ __add__()

def miasm.core.graph.MatchGraph.__add__ (   self,
  graph 
)
Construction helper, merging @graph with self
@graph: MatchGraph instance

Reimplemented from miasm.core.graph.DiGraph.

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

◆ __rshift__()

def miasm.core.graph.MatchGraph.__rshift__ (   self,
  joker 
)
Construction helper, adding @joker to the current graph as a son of
_last_node
@joker: MatchGraphJoker instance
Here is the call graph for this function:

◆ match()

def miasm.core.graph.MatchGraph.match (   self,
  graph 
)
Naive subgraph matching between graph and self.
Iterator on matching solution, as dictionary MatchGraphJoker -> @graph
@graph: DiGraph instance
In order to obtained correct and complete results, @graph must be
connected.
Here is the call graph for this function:

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