首页 编程教程正文

几个ida python脚本的实战例子

piaodoo 编程教程 2020-02-22 22:10:36 1292 0 python教程

本文来源吾爱破解论坛

在使用IDA工具进行逆向分析时,有时需要用到ida python脚本来帮助我们分析程序,接下来分享几个实战例子供大家学习。
例子1:遍历程序中所有的函数并输出程序的起始地址和函数名
[Python] 纯文本查看 复制代码

ea = ScreenEA()
for function_ea in Functions(SegStart(ea), SegEnd(ea)):
    print hex(function_ea), GetFunctionName(function_ea)

例子2:循环遍历所有段并逐字节获取它们的数据
[Python] 纯文本查看 复制代码
segments = dict()
for seg_ea in Segments():
data = []
for ea in range(seg_ea, SegEnd(seg_ea)): #遍历段内每个地址

data.append(chr(Byte(ea))) #获取字节及字节对应的字符

segments[SegName(seg_ea)] = ''.join(data) #赋值段中的数据
for seg_name, seg_data in segments.items(): #输出段名及段中数据大小
print seg_name, len(seg_data)
例子3:输出代码段中的指令,并统计指令数量
[Python] 纯文本查看 复制代码
memories=dict()

for seg in Segments(): #遍历所有的段
	if SegName(seg)=='.text': 
		for head in Heads(seg,SegEnd(seg)): #遍历所有指令,head为地址
			if isCode(GetFlags(head)): #判断是否为指令
				flag=GetMnem(head) #获取汇编指令
print "flag ",flag
memories[flag]=memories.get(flag,0)+1 #统计指令个数
all=map(lambda x:(x[1],x[0]),memories.items()) 
all.sort() #排序

for pri,sed in all:
	print pri,sed

例子4:该例子遍历所有函数,并查找所有对每个函数执行的调用,引用将存储在两个字典中。
[Python] 纯文本查看 复制代码
from sets import Set
ea=ScreenEA()
Par=dict()
son=dict()
for fun in Functions(SegStart(ea),SegEnd(ea)):  #遍历函数
	f_name=GetFunctionName(fun) 
	Par[f_name]=Set(map(GetFunctionName,CodeRefsTo(fun,0))) #创建一个集合,其中包含调用(引用)的所有函数的名称
	for fun_son in CodeRefsTo(fun,0): #遍历所有的引用
		fname_son=GetFunctionName(fun_son) #获取引用函数的名称
		son[fname_son]=son.get(fname_son,Set())
		son[fname_son].add(f_name); #将当前函数添加到函数列表中
	functions=Set(Par.keys()+son.keys()) #获取所有函数的列表
for per in functions:
   print "%d %s %d" % (len(Par.get(per,[])),per,len(son.get(per,[])))

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7762.html

搜索