zoukankan      html  css  js  c++  java
  • 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
    "%(func,count,addr))
                    judgeAduit(addr)
                        
    if __name__ == '__main__':
        '''
        handle all not safe functions
        '''
        print "-------------------------------"
        danger_funcs = ["strcpy","sprintf","strncpy"] 
        flagCalls(danger_funcs)
        print "-------------------------------"
  • 相关阅读:
    数据结构杂谈(三)堆排序
    数据结构杂谈(二)简单有趣的地精排序Gnome sort
    搭建proftp服务器
    python 单例模式
    mongo
    kafka
    查看端口占用
    tinyproxy 代理使用
    Linux 搭建wiki
    linux 安装 java
  • 原文地址:https://www.cnblogs.com/blacksunny/p/7214645.html
Copyright © 2011-2022 走看看