angr.analyses.forward_analysis.visitors.call_graph 源代码

from __future__ import annotations
from angr.utils.graph import GraphUtils
from .graph import GraphVisitor


[文档] class CallGraphVisitor(GraphVisitor): """ :param networkx.DiGraph callgraph: """
[文档] def __init__(self, callgraph): super().__init__() self.callgraph = callgraph self.reset()
[文档] def successors(self, node): return list(self.callgraph.successors(node))
[文档] def predecessors(self, node): return list(self.callgraph.predecessors(node))
[文档] def sort_nodes(self, nodes=None): sorted_nodes = GraphUtils.quasi_topological_sort_nodes(self.callgraph) if nodes is not None: sorted_nodes = [n for n in sorted_nodes if n in set(nodes)] return sorted_nodes