IDAPython學習(一)


1、概述

  IDAPython在IDA中集成了Python解釋器,除了提供了Python功能外,使用這個插件還可以編寫實現IDC腳本語言的所有Python腳本。

  IDAPython顯著優勢在於,它可以充分利用Python強大的數據處理能力及所有的Python模塊。

  IDAPython還具有IDA SDK的大部分功能,與IDC相比,使用它可以編寫功能更加強大的腳本。

  IDAPython有一個缺點就是文檔資源太少,容易造成障礙。

2、IDAPython三個模塊:

  1. idaapi.py:     負責訪問核心IDA API。
  2. idautils.py:       提供大量的使用函數。
  3. 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 "-------------------------------"

 


免責聲明!

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



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