idapyhton

基本地址

idc.ScreenEA()- 返回当前坐标地址

here()- 返回当前坐标地址,同上

MinEA()- 返回程序首地址

MaxEA()- 返回程序末尾地址 

idc.SegName(ea)- 返回所在段,如:.text

idc.GetDisasm(ea)- 返回汇编,如:mov rdx, rdi

idc.GetMnem(ea)- 返回助记符,如:mov

idc.GetOpnd(ea, n)- 返回操作数,n表示第几个操作数,从0开始,如:idc.GetOpnd(ea, 0)返回rdx

idaapi.BADADDR- 用于比较地址是否无效,如:if idaapi.BADADDR == here(): print "Invalid address"

段地址

idautils.Segments()- 返回所有段

idc.SegName(seg)- 返回段名称

idc.SegStart(seg)- 返回段起始地址

idc.SegEnd(seg)- 返回段结束地址

idc.NextSeg(ea)- 返回下一个段起始地址,ea可以是当前段中任意地址

idc.SegByName(name)- 根据名称返回段起始地址

函数

idautils.Functions()- 返回所有函数

idc.GetFunctionName(func_a)- 返回函数名称

idaapi.get_func(ea)- 返回,其中有诸如startEA, endEA属性用于返回函数起始和结束地址

idc.NextFunction(ea)- 返回下一个函数起始地址

idc.PrevFunction(ea)- 返回上一个函数起始地址

idc.GetFunctionAttr(ea, attr) - 返回当前函数属性

idc.GetFunctionFlags(func_a)

       返回的flags有以下几种:

       FUNC_NORET- 函数无返回值

       FUNC_FAR- 不常用

       FUNC_USERFAR- 不常用

       FUNC_LIB- 函数为标准库函数   

       FUNC_STATIC- 函数为static

       FUNC_FRAME- 函数使用栈帧指针ebp,一般为push ebp; mov ebp, esp; sub esp, xxh

       FUNC_BOTTOMBP- 函数使用栈指针,与FUNC_FRAME类似

指令

idautils.FuncItems(ea)- 返回当前函数所有指令,需要list(FuncItems(ea))转化为list

idc.NextHead(ea)- 返回下一条指令

idc.PrevHead(ea)- 返回上一条指令

idc.NextAddr(ea)- 返回下一地址

idc.PrevAddr(ea)- 返回上一地址

操作数

idc.GetOpType(ea, n)- 返回操作数类型

o_void- 不含有操作数的指令返回0,如:retn

o_reg- 寄存器,如:pop edi

o_mem- 内存引用,如:cmp ds:dword_A152B8, 0

o_phrase- 寄存器寻址,如:mov [edi+ecx], eax

o_displ- 偏移寻址,如:mov eax, [edi+18h]

o_imm- 直接数,如:add esp, 0Ch

o_far- x86和x86_64很少用到

o_near- x86和x86_64很少用到

idc.OpOff(ea, n, base)- 将操作数转换为offset,base为offset基地址

idc.GetOperandValue(ea, n)- 得到操作数的值

引用

idautils.CodeRefsTo(ea, flow)- 返回所有代码引用至,flow为是否包含正常指令流,0为不包含,1为包含

idautils.CodeRefsFrom(ea, flow)- 返回所有代码引用自,flow同上

idautils.Names()- 以元组(addr, name)形式返回所有name地址

idc.LocByName(name)- 返回name的地址

idautils.DataRefsTo(ea)- 返回所有数据引用至

idautils.DataRefsFrom(ea)- 返回所有数据引用自

idautils.XrefsTo(ea, flag=0)- 返回所有引用至,flag在代码引用时与flow一样

idautils.XrefsFrom(ea, flag=0)- 返回所有引用至,flag同上

查找

idc.FindBinary(ea, flag, searchstr, radix=16)- 查找二进制数据,默认以16进制形式查找,flag如下:

     SEARCH_UP- 向上查找

     SEARCH_DOWN- 向下查找

     SEARCH_NEXT- 查找下一个

     SEARCH_CASE- 指定示例

     SEARCH_NOSHOW- 不显示查找过程

     SEARCH_UNICODE- 查找unicode

     SEARCH_IDENT

     SEARCH_BRK

idc.FindText(ea, flag, y, x, searchstr)- 查找字符串,y表示在几行内查找,x表示字符串在行中位置,通常为0

     idc.GetFlags(ea)- 返回当前地址标志,用于以下函数f参数:

     idc.isCode(f)- 是否为代码

     idc.isData(f)- 是否为数据

     idc.isTail(f)- 是否为尾部

     idc.isHead(f)- 是否为头部

     idc.isUnknown(f)- 是否IDA不能识别

     idc.FindCode(ea, flag)- 查找代码位置

     idc.FindData(ea, flag)- 查找数据位置

     idc.FindUnexplored(ea, flag)- 查找IDA无法识别为code或data的位置

     idc.FindExplored(ea, flag)- 查找IDA识别为code或data的位置

     idc.FindImmediate(ea, flag, value)- 查找直接数

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值