本文来源吾爱破解论坛
1.前言
在用IDA逆向分析程序的时候经常需要查看交叉引用情况,当我们用ctrl+x分析每个函数时,显然是比较费时间的,那么接下来我给大家分享一个可以可视化显示ida中汇编语言中函数调用情况的idapython脚本。
2.代码
[Python] 纯文本查看 复制代码
#-*- coding:utf-8 -*-from sets import Set import pydot # 获取段的起始地址 ea = ScreenEA() callers = dict() callees = dict() # 遍历所有的函数 for function_ea in Functions(SegStart(ea), SegEnd(ea)): f_name = GetFunctionName(function_ea) # 遍历每个函数的引用函数 for ref_ea in CodeRefsTo(function_ea, 0): # 引用函数名 caller_name = GetFunctionName(ref_ea) #将当前函数添加到引用函数调用的函数列表中 callees[caller_name] = callees.get(caller_name, Set()) callees[caller_name].add(f_name) #创建图像对象 g = pydot.Dot(type='digraph') #设置默认值 g.set_rankdir('LR') g.set_size('11,11') g.add_node(pydot.Node('node', shape='ellipse', color='lightblue', style='filled')) g.add_node(pydot.Node('edge', color='lightgrey')) #获取所有函数 functions = Set(callees.keys()+callers.keys()) # 对于每个函数和每个被引用的函数,添加相应的边。 for f in functions: if callees.has_key(f): for f2 in callees[f]: g.add_edge(pydot.Edge(f, f2)) # 将输出写入到Postscript文件 g.write_ps('example6.ps')
3.运行结果
ida_python_dot_lr.gif (68.18 KB, 下载次数: 1)
下载附件 保存到相册
本帖被以下淘专辑推荐: · 个人收藏(FleTime)|主题: 142, 订阅: 71
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。