吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3594|回复: 9
收起左侧

[Python 转载] 用python脚本可视化显示ida中函数的调用情况

[复制链接]
buzhifou01 发表于 2019-12-2 17:21
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

免费评分

参与人数 5吾爱币 +5 热心值 +5 收起 理由
pwp + 1 我很赞同!
zhangbice + 1 谢谢@Thanks!
苏紫方璇 + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
moranyuyan + 1 + 1 我很赞同!
FleTime + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

小李靖 发表于 2019-12-2 17:47
收藏,感谢楼主的分享
dyliuyunfei 发表于 2019-12-2 18:29
fillix 发表于 2019-12-2 19:07
zhangbice 发表于 2019-12-3 09:08
给力,这个好
 楼主| buzhifou01 发表于 2019-12-3 18:57
fillix 发表于 2019-12-2 19:07
哇,厉害了,可是具体怎么用呢?

你用过ida吗?这个ida的python脚本,可以直接在ida中导入
Super_Kaguya 发表于 2019-12-3 23:43
楼主问一下你这个给的是伪代码吗?我有一点看不懂,而且我跑了一下说ea不存在这个函数。我有点蒙求解释。
Super_Kaguya 发表于 2019-12-3 23:44
Super_Kaguya 发表于 2019-12-3 23:43
楼主问一下你这个给的是伪代码吗?我有一点看不懂,而且我跑了一下说ea不存在这个函数。我有点蒙求解释。

楼主不用回答了,我懂了,我没仔细审题。
fillix 发表于 2019-12-4 14:38
buzhifou01 发表于 2019-12-3 18:57
你用过ida吗?这个ida的python脚本,可以直接在ida中导入

哦哦,好的,非常感谢!!
pwp 发表于 2020-2-11 01:17
大佬啊,求带
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 21:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表