调用 XREF 的统计信息

逆向工程 艾达
2021-07-02 06:19:51

是否有可能在 IDA 中看到一种关于函数的统计数据以及它们被引用的频率?在分析程序时,我发现它很有帮助。

经常被引用的函数通常是常见的功能。一个例子是这样的东西strcmp()malloc()/free()strlen(),等。

其中一些很容易识别(如strcmp()实现),并且尽早为这些函数命名,使其余部分的分析更容易。

2个回答

可能有一种更简单的方法来获取某个函数的外部参照计数,但这对我有用。

from idaapi import *
funcs = Functions()
for f in funcs:
   name = Name(f)
   print "%s %d" % (name, len(list(XrefsTo(f))))

以下代码取自 GreyHat Python,与之前的答案非常相似:

from idaapi import *
funcs = ["malloc","free","strcmp"]

for f in funcs:
   curAddr = LocByName(f)
   if curAddr != BADADDR:
      xrefs = CodeRefsTo(curAddr,0)
      print "Cross References to %s" % f
      for ref in xrefs:
         print "08x" % ref
         SetColor(ref,CIC_ITEM,0x0000ff)

此函数还将突出显示调用以使跟踪更容易