miasm
Reverse engineering framework
|
Public Member Functions | |
def | __init__ (self, ircfg, implicit=False, apply_simp=True, follow_mem=True, follow_call=True) |
def | get (self, loc_key, elements, line_nb, heads) |
def | get_from_depnodes (self, depnodes, heads) |
Static Public Member Functions | |
def | do_follow (exprs, follow_mem, follow_call) |
Implementation of a dependency graph A dependency graph contains DependencyNode as nodes. The oriented edges stand for a dependency. The dependency graph is made of the lines of a group of IRblock *explicitly* or *implicitly* involved in the equation of given element.
def miasm.analysis.depgraph.DependencyGraph.__init__ | ( | self, | |
ircfg, | |||
implicit = False , |
|||
apply_simp = True , |
|||
follow_mem = True , |
|||
follow_call = True |
|||
) |
Create a DependencyGraph linked to @ircfg @ircfg: IRCFG instance @implicit: (optional) Track IRDst for each block in the resulting path Following arguments define filters used to generate dependencies @apply_simp: (optional) Apply expr_simp_explicit @follow_mem: (optional) Track memory syntactically @follow_call: (optional) Track through "call"
|
static |
def miasm.analysis.depgraph.DependencyGraph.get | ( | self, | |
loc_key, | |||
elements, | |||
line_nb, | |||
heads | |||
) |
Compute the dependencies of @elements at line number @line_nb in the block named @loc_key in the current IRCFG, before the execution of this line. Dependency check stop if one of @heads is reached @loc_key: LocKey instance @element: set of Expr instances @line_nb: int @heads: set of LocKey instances Return an iterator on DiGraph(DependencyNode)
def miasm.analysis.depgraph.DependencyGraph.get_from_depnodes | ( | self, | |
depnodes, | |||
heads | |||
) |
Alias for the get() method. Use the attributes of @depnodes as argument. PRE: Loc_Keys and lines of depnodes have to be equals @depnodes: set of DependencyNode instances @heads: set of LocKey instances