轉載: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中給它們上色。