1、概述
IDAPython在IDA中集成了Python解釋器,除了提供了Python功能外,使用這個插件還可以編寫實現IDC腳本語言的所有Python腳本。
IDAPython顯著優勢在於,它可以充分利用Python強大的數據處理能力及所有的Python模塊。
IDAPython還具有IDA SDK的大部分功能,與IDC相比,使用它可以編寫功能更加強大的腳本。
IDAPython有一個缺點就是文檔資源太少,容易造成障礙。
2、IDAPython三個模塊:
- idaapi.py: 負責訪問核心IDA API。
- idautils.py: 提供大量的使用函數。
- idc.py: 負責提供IDC中所有函數的功能。
參考鏈接:三個文件介紹可用函數
在IDAPython的idautils模塊中包含了多個生成器函數,使用它們可以生成比我們在IDC腳本中看到的列表更加直觀的交叉引用列表。
3、實例
# ## another way to search all not safe functions # from idaapi import * def judgeAduit(addr): ''' not safe function handler ''' MakeComm(addr,"### AUDIT HERE ###") SetColor(addr,CIC_ITEM,0x0000ff) #set backgroud to red pass def flagCalls(danger_funcs): ''' not safe function finder ''' count = 0 for func in danger_funcs: faddr = LocByName( func ) if faddr != BADADDR: # Grab the cross-references to this address cross_refs = CodeRefsTo( faddr, 0 ) for addr in cross_refs: count += 1 Message("%s[%d] calls 0x%08x\n"%(func,count,addr)) judgeAduit(addr) if __name__ == '__main__': ''' handle all not safe functions ''' print "-------------------------------" danger_funcs = ["strcpy","sprintf","strncpy"] flagCalls(danger_funcs) print "-------------------------------"