IDAPython脚本之收集函数的调用信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDAPython脚本之收集函数的调用信息相关的知识,希望对你有一定的参考价值。

转载:All Right

当我们要寻找软件漏洞 bug 的时候,或者做恶意代码分析的时候,首先会找一些常用的而且容易被错误使用的函数。但是有时候程序代码太多找的比较辛苦,并且费时间。所以我们可以写一个脚本来跟踪这些函数,找出调用它们的地方,之后在这些地方的背景色设置成不同的颜色,这样我们在 IDA 窗口中就能很方便的看出来。

下面是我们测试程序的伪代码:
技术分享
我们要用这个脚本找出printf函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
from 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中浏览这些地方会看到它们都被上了色。
技术分享








以上是关于IDAPython脚本之收集函数的调用信息的主要内容,如果未能解决你的问题,请参考以下文章

IDApython 命令

IDAPython学习

IDAPython学习

IDAPython脚本编写环境

Python大法之告别脚本小子系列—信息资产收集类脚本编写(下)

利用IDA Python静态分析函数调用路径