- 7
- 0
- 约3.02万字
- 约 56页
- 2021-02-15 发布于北京
- 举报
idapython 主要依赖的的包由以下三部分组成:
idc
idautils
idaapi
一些基础的函数
位置相关函数(用于获取光标,或特殊数据的地址)
idc.ScreenEA() or here()返回当前光标位置
MinEA() 返回idb 的起始地址
MaxEA() 返回idb 的结束地址
hex(MinEA()) 将起始地址以 16 进制输出,如下所示:
idc.SegName(ea) 获取ea 地址的段,比如text
idc.GetDisasm(ea) 获取ea 地址的反汇编指令
ida.GetMnem(ea) 获取ea 地址的反汇编指令操作码
ida.GetOpnd(ea,n) 获取ea 地址的反汇编指令的第n 个操作数,由0 开始,
实例如下:
有时需要用于判断一个地址是否无效,可通过idaapi.BADADDR 实现,该函数返
回一个内置的无效地址,具体使用如下:
if idaapi.BADADDR != here():
print vaild addr
节
idapython 的强大之处在于对idb 数据库的循环迭代,其中包括指令,交叉
等,这些会在下文中提到,反编译文件的数据节迭代会是一个不错的开始,
代码如下所示:
import idautils
for seg in idautils.Segments():
print idc.SegName(seg),idc.SegStart(seg),idc.SegEnd(seg)
idautils.Segments()函数返回该反编译文件中所有的节 ,托python
的福,这里我们可以非常方便的直接对这些节 进行循环迭代,每一次迭代会
对一个节进行处理。
每层迭代中使用到以下函数
idc.SegName(seg) 获取节名
idc.SegStart(seg)获取该节的开始
idc.SegEnd(seg)获取该节的结束
通过函数idc.NextSeg(ea)可以获取下一个节,参数为当前节地址范围内任
意地址皆可。
函数
继数据节之后我们下一个目标是函数。
import idautils
for func in idautils.Functions():
print hex(func),idc.GetFunctionName(func)
idautils.Functions()会返回一个所有函数的起始地址列表,该函数也支持
区域查找,通过给函数传入起始和终止地址,可以控制搜寻的范围。
如idautils.Functions(start_addr,end_addr),idc.GetFunctionName(ea)
返回一个函数名,ea 可以为该函数中的任意二进制地址。
通过函数idaapi.get_func(ea),获取一个idaapi.func_t 的类,该类定义
了函数的一些属性,如下脚本所示,通过该返回的数据结构获取该函数的边界值。
import idautils
ea = idc.ScreenEA()
print ea
func = idaapi.get_func(ea)
print type(func)
print Start:0x%x,End:0x%x %(func.startEA,func.endEA)
idaapi.get_func(ea)会返回一个函数类对象,通过命令dir (class)可以
查看该类的导出函数和属性。
通过idc.NextFunciton(ea)和idc.PrevFunction(ea)分别可以获取当前地
址前后的两个函数的地址,传入的ea 参数为当前函数区间的所有合法地址。
import idautils
ea = idc.ScreenEA()
print ea
next = idc.NextFunction(ea)
pre = idc.PrevFunction(ea)
print the next is 0x%x,the pre is 0x%x %(next,pre)
idapython 提过了多种获取数据 的方式,另一种获取函数边界值的方式
可以通过以下两个函数。
通过函数idc.GetFunctionAttr(ea,FUNCATTR_START),
idc.GetFunctionAttr(ea,FUNCATTR_END)。获取地址ea 所在函数的开始和结尾。
通过函数idc.GetDisasm(ea)获取当前地
您可能关注的文档
- t13205e04 - manufacturing documentation of nangang南岗项目塔筒制造文件t13205e04 - g132 95 0 5mw 230v 50hz ciia南岗项目中文drawing图纸gp283981_r2_ch.pdf
- 零件及设备飞控minix用户使用手册.pdf
- 2012年北京现代雅绅特mcg 1 4 dohc原厂悬架系统17.pdf
- 新文本2017 9 2服务热线管理规定1.pdf
- 英语真题与答案05-17解释2010年英语试题解析.pdf
- 山东大学医学院考研复试内科真题.pdf
- 就这900句玩转口语-海报.pdf
- 2、信息系统服务管理、监理知识7 22.pdf
- 12机器学习_衍化至繁逻辑回.pdf
- yikm_k02_方法论_知识管理域_行业知识库_农林行业_业务解决方案_实施解决方案_xx0006.pdf
原创力文档

文档评论(0)