一.常用函数
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)