IDAPython脚本之收集函数的调用信息

转载:All Right

当我们要寻找软件漏洞 bug 的时候,或者做恶意代码分析的时候,首先会找一些常用的而且容易被错误使用的函数。但是有时候程序代码太多找的比较辛苦,并且费时间。所以我们可以写一个脚本来跟踪这些函数,找出调用它们的地方,之后在这些地方的背景色设置成不同的颜色,这样我们在 IDA 窗口中就能很方便的看出来。

下面是我们测试程序的伪代码:

我们要用这个脚本找出printf函数。


1

2

3

4

5

6

7

8

9

10

11

12

13


from idaapi import *

danger_funcs = ["printf"] # 需要寻找的函数名

for func in danger_funcs:

addr = LocByName( func )

if addr != BADADDR:

#找到交叉引用的地址

cross_refs = CodeRefsTo( addr, 0 )

print "Cross References to %s" % func

print "-------------------------------"

for ref in cross_refs:

print "%08x" % ref

# 函数的颜色为红色

SetColor( ref, CIC_ITEM, 0x0000ff)

效果:
我们先获得这些函数的地址,然后测试这些地址的有效性。接着获得这些函数的交叉引用信息,确认什么地方调用了它们,最后把它们打印出来,并在IDA中给它们上色。

这是打印出的信息。

如果在IDA中浏览这些地方会看到它们都被上了色。

时间: 2024-08-01 01:51:33

IDAPython脚本之收集函数的调用信息的相关文章

【转】搞清楚脚本中这些函数的调用规律

我没验证啊!~~~~~ 原文请戳:搞清楚脚本中这些函数的调用规律 关于游戏中游戏对象是否处于active或者脚本是否为enabled 时 Start和Awake函数的调用基本上可以有四种情况:1.game object 为active 但是脚本为disabled此时当对象被创建时只有Awake函数会被立刻调用,OnEnable和 Start 会在Enabled脚本后调用.2.game object 为deactive但是脚本为enabled此时当对象被创建时不会有函数被调用,当active物体之

shell脚本:收集系统和各种服务的状态信息

脚本功能:收集系统和各种服务的状态信息 ------------------ #!/bin/bash # get system and services status # by colin # revision on 2015-10-15 ######################################## # 功能说明:该脚本用于收集系统和各种服务的状态信息 # # 部署脚本时,加参数请注意参数顺序,否则会影响传上去的数据解析结果 #+ 命令:sh system_status_v3

QThread调用外部子函数怎么将信息emit

产生一个子线程,遍历文件夹,然后将信息打印在主界面上. 1.子类化QThread可以产生一个新的线程,重构虚函数run().子线程和主线程的通信是利用signal-slot机制,子线程将信息通过emit signal(“信息”)发送给主线程 class NewThread : public QThread {  Q_OBJECT public: NewThread(const QString strval)  {   filepath=strval;  }; protected:  void r

数据库性能优化、统计信息与对象统计信息概述收集、扩展统计信息、dbms_stats.get_prefs

数据库性能优化 相关书籍: 1.基于成本的Oracle优化法则 2.Oracle性能诊断艺术 3.基于Oracle的SQL优化 ----------------------------------------------------------------------------------------- 两种优化器: CBO  cost-base optimizer 基于cost 更大适应性/灵活性/10g开始 RBO  rule-base optimizer 基于规则 制定了15条/10g以

Oracle里收集与查看统计信息的方法

Oracle数据库里的统计信息是这样的一组数据:它存储在数据字典里,且从多个维度描述了Oracle数据库里对象的详细信息.CBO会利用这些统计信息来计算目标SQL各种可能的.不同的执行路径的成本,并从中选择一条成本值最小的执行路径来作为目标SQL的执行计划. Oracle数据库里的统计信息可以分为如下6种类型: 表的统计信息 索引的统计信息 列的统计信息 系统统计信息 数据字典统计信息 内部对象统计信息 表的统计信息用于描述Oracle数据库里表的详细信息,它包含了一些典型的维度,如记录数.表块

SQL点滴13—收集SQLServer线程等待信息

原文:SQL点滴13-收集SQLServer线程等待信息 要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信息是进行数据库优化的依据. sys.dm_os_wait_stats 这是一个系统视图,里面存储线程所遇到的所有的等待信息,具体的列如下表 列名 数据类型 说明 Wait_type Nvarchar(60) 等待类型名称 waiting_tasks_count Bigint 等待类型的等待数.该计数

Unity中Awake与Start函数的调用情况总结(转)

在Unity中编写脚本时,有一系列的可重写(override)函数供我们使用,其中的Awake与Start两个函数作为初始化与设置之用,几乎在每个脚本中都要用到.因此,正确的把握这两个函数的调用时机,就能让我们在程序开发过程中避免一些错误,提高开发效率.比较懒,所以就没有上图,欢迎大家的批评指正: ) 1.  Awake函数 首先,我们来看unity的参考手册中对Awake函数的一些说明情况: 当脚本实例被加载时会调用Awake函数:Awake函数在所有的游戏对象被初始化完毕之后才会被调用:在脚

深入剖析php执行原理(4):函数的调用

本章开始研究php中函数的调用和执行,先来看函数调用语句是如何被编译的. 我们前面的章节弄明白了函数体会被编译生成哪些zend_op指令,本章会研究函数调用语句会生成哪些zend_op指,等后面的章节再根据这些op指令,来剖析php运行时的细节. 源码依然取自php5.3.29. 函数调用 回顾之前用的php代码示例: <?php function foo($arg1) { print($arg1); } $bar = 'hello php'; foo($bar); 在函数编译一章里已经分析过,

MFC浅析(7) CWnd类虚函数的调用时机、缺省实现

CWnd类虚函数的调用时机.缺省实现 FMD(http://www.fmdstudio.net) 1. Create 2. PreCreateWindow 3. PreSubclassWindow 4. PreTranslateMessage 5. WindowProc 6. OnCommand 7. OnNotify 8. OnChildNotify 9. DefWindowProc 10. DestroyWindow 11. PostNcDestroy CWnd作为MFC中最基本的与窗口打交