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中瀏覽這些地方會看到它們都被上了色。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM