IDA python使用

发布时间 2023-08-22 20:29:49作者: ONE_ZJ

一.常用函数
1.def hex(str) #把字符串转换成十六进制
2.def MinEA() #获取反汇编窗口中代码段的最小地址
3.def MaxEA() #获取反汇编窗口中代码段的最大地址
4.def ScreenEA() #获取光标所在位置
5.def SegEnd(str) #获取程序中某段的结束地址
典型例子:

print (hex(MinEA()))
print (hex(MaxEA()))
print (hex(ScreenEA()))
for seg in Segments():  
    #如果为代码段,则调用GetStr
    if SegName(seg) == '.text':
        print (hex(SegEnd(seg)))

6.def Byte(addr) #以字节为单位获取地址处的值
7.def Word(addr) #以字为单位获取地址处的值
8.def Dword(addr) #以双字为单位获取地址处的值
9.def Qword(addr) #以四字为单位获取地址处的值
10.def isLoaded(addr) #判断地址处的数值是否有效
11.def GetDisasm(addr) #输出某地址处的反汇编字符串(包括注释)
12.def GetOpnd(addr,n) #获取某地址处的操作数(第一个参数是地址,第二个是操作数索引)
13.def GetFlags(addr) # 获取与地址对应的整数
14.def GetMnem(addr) #输出某地址处的指令
15.def GetOpType(addr,n) #输出指定操作数的类型
16.def GetOperandValue(addr,n) #输出跟指定操作数相关的数据值

from idc_bc695 import *#注意,这个必须要有
addr = 0x0040134a
print (GetDisasm(addr)) 
 
print (GetOpnd(addr,1))
 
print (hex(GetFlags(addr)) )
 
print (GetMnem(addr) )
 
print (GetOpType(addr,1)) 
 
print (GetOperandValue(addr,1))

17.def PatchByte(addr,val) #以字节为单位修改
18.def PatchWord(addr,val) #以字为单位修改
19.def PatchDword(addr,val) ##以双字为单位修改
20.def Functions(start,end)#获取某地址区间所有函数
21.def GetFunctionName(addr)#获取函数名字
22.def NextFunction(addr) #获取下一个函数地址
23.def XrefsTo(Addr, flags)#获取调用某地址处函数的函数

for seg in Segments():  
 
    #如果为代码段
 
    if SegName(seg) == '.text':
 
        for function_ea in Functions(seg,SegEnd(seg)):
 
            FunctionName=GetFunctionName(function_ea)
 
            print (FunctionName)
 
            nextFunc=NextFunction(function_ea)
 
            print (nextFunc)

这里只是介绍了一些基础用法以及对应函数的功能,但是在实际情况当中函数的名称可能不一样,这个时候就需要查阅相关资料以及官方文档https://www.hex-rays.com/products/ida/support/idapython_docs/来查找对应的函数。