计算 IDA Pro 图中的节点和边数

逆向工程 艾达 控制流图
2021-06-12 09:32:28

是否可以获得 IDA Pro 图形概览的节点和边数?如果我生成一个 wingraph32 流程图,我可以获得这个,但似乎 wingraph32 不适用于非常大的函数。wingraph32 是否还有一种方法可以支持非常大的图形?

谢谢。

1个回答

如果要在 IDA 中获取函数图的节点和边数,可以使用给定的 IDAPython 代码进行计算:

func = idaapi.get_func(here())
g = idaapi.FlowChart(func)

nodes = 0
edges = 0
for x in g:
  nodes += 1
  for succ in x.succs():
    edges += 1

  for pred in x.preds():
    edges += 1

print "Number of nodes", nodes
print "Number of edges", edges

至于 wingraph32 工具,我建议您改用“Proximity Viewer”。当光标位于函数内时,只需按“-”键即可。