首页 编程教程正文

用python脚本可视化显示ida中函数的调用情况

piaodoo 编程教程 2020-02-22 22:15:11 1323 0 python教程

本文来源吾爱破解论坛

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)

下载附件  保存到相册

2019-12-2 17:20 上传



本帖被以下淘专辑推荐: · 个人收藏(FleTime)|主题: 142, 订阅: 71

版权声明:

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

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

搜索