关于IDA Python

关于IDA Python
IDAPython在IDA中集成了Python解释器,除了提供了Python功能外,使用这个插件还可以编写实现IDC脚本语言的所有Python脚本。
IDAPython显著优势在于,它可以充分利用Python强大的数据处理能力及所有的Python模块。
IDAPython还具有IDA SDK的大部分功能,与IDC相比,使用它可以编写功能更加强大的脚本。
IDA Python包含三个独立的模块
idc:兼容idc函数的模块,负责提供IDC所有的函数,使用的时候自动导入
idautils:绝大多数的处理依托与这个模块去实现,提供大量的使用函数,其中很多函数可以用来生成python列表(比如函数交叉引用返回的列表),使用的时候自动导入
idaapi:允许使用者通过类的形式,访问更多底层的数据,负责访问核心的IDA API(再使用的时候需要手动导入)
编写脚本常用的一些函数
ScreenEA():获取IDA调试窗口中,光标代码的地址。通过这个函数,可以从指定的点运行脚本
GetInputFileMD5():返回IDA加载的二进制文件的MD5值,可以进行文件版本的判断
SegByName(string SegmentName):通过段名字返回段基址,调用.text为参数,返回代码段开始的地址
SegEnd(long Address):通过段内的某个地址返回段的段尾地址
Functions(long startAddress,long Endaddress):返回开始地址到结束地址之间的的所有函数 的列表
LocByName(string FuncName):通过函数名称返回对应的函数地址
GetFuncOffset(long Address):通过任意一个地址,得到这个地址所属的函数名,以及给定的地址和函数的相对位移,以字符串"名字+偏移"的形式返回
GetFunctionName(long address):通过任意一个地址,返回这个地址所属的函数
CodeRefsTo(long Address,bool Flow):返回一个列表,包含指定地址处的代码被什么地方引用,Flow表示是否追踪这些引用
CodeRefsFrom(long Address,bool Flow):返回一个列表,包含指定地址出的代码引用何处的代码(引用源)
DataRefsTo(long Address):返回一个列表,包含指定地址出的数据被谁引用(常用来追踪全局变量)
DatRefsFrom(long Address):返回一个列表,包含指定地址的代码引用何处的数据(引用源)
脚本样例
用来收集在文件中可能存在栈溢出或者整型溢出点的函数,并修改调用处的代码颜色

from idaapi import *
danger_func=["strcpy","malloc","VirtualAlloc","WriteMemory"]#危险函数
x=ScreenEA()//获取此时光标的地址:API测试
print "Strar"
print "%08x" % x
print "TEST"
for func in danger_func:
	addr=LocByName(func)#根据函数名称获取函数地址
    if addr!=BADADDR:
    	List=CodeRefsTo( addr, False )#返回列表查看目标地址处的代码被谁引用
    	print "Cross References to %s" % func 
        for result in List:
        	print "%08x" % result
            SetColor(result,CIC_ITEM, 0x00CFff)#设置危险函数处的的颜色 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值