IDAPython脚本之收集函数的调用信息
文章目录
当我们要寻找软件漏洞 bug 的时候,或者做恶意代码分析的时候,首先会找一些常用的而且容易被错误使用的函数。但是有时候程序代码太多找的比较辛苦,并且费时间。所以我们可以写一个脚本来跟踪这些函数,找出调用它们的地方,之后在这些地方的背景色设置成不同的颜色,这样我们在 IDA 窗口中就能很方便的看出来。
下面是我们测试程序的伪代码:
我们要用这个脚本找出printf函数。12345678910111213from idaapi import *danger_funcs = ["printf"] # 需要寻找的函数名for func in danger_funcs: addr = LocByName( func ) if addr != BADADDR: #找到交叉引用的地址 cross_refs = CodeRefsTo( addr, 0 ) print "Cross References to %s" % func print "-------------------------------" for ref in cross_refs: print "%08x" % ref # 函数的颜色为红色 SetColor( ref, CIC_ITEM, 0x0000ff)
效果:
我们先获得这些函数的地址,然后测试这些地址的有效性。接着获得这些函数的交叉引用信息,确认什么地方调用了它们,最后把它们打印出来,并在IDA中给它们上色。
这是打印出的信息。
如果在IDA中浏览这些地方会看到它们都被上了色。