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 "-------------------------------"
  • 相关阅读:
    mysql忘记密码怎么办?
    简单Ztree的实现————不连接数据库版
    正则那些事
    牛逼的OSQL----大数据导入
    从数据库导出数据
    瀑布流动态加载图片
    MVC中使用Ajax提交数据 Jquery Ajax方法传值到action
    励志经典,持续收集ing....
    看世界新闻网的简单实现
    TestList汇总
  • 原文地址:https://www.cnblogs.com/blacksunny/p/7214645.html
Copyright © 2011-2022 走看看