没有哪一个应用程序能够满足每名用户的一切需求。要想预测每一种可能出现的情况,几乎是不可能的事情。
应用程序开发者面临两种选择:要么满足用户提出的无止境的功能要求,要么提供一种方法,供用户解决问题。IDA 采用了后一种方法,它集成了一个脚本引擎,让用户从编程角度对 IDA 的操作进行全面控制。
脚本的潜能无限,可用于开发简单的单行程序,也可以开发功能全面的程序,从而自动执行常见的任务,也能实现复杂的分析功能。从自动化的角度看,你可以将 IDA 脚本看成宏;而从分析的角看,IDA 脚本语言可看成是一种查询语言,它能够以编程方式访问 IDA数据库的内容。
IDA 使用两种不同的语言编写脚本。IDA 的原始嵌入式脚本语言叫做IDC ,之所以取这个名称,可能是因为它的语法与 C 语言的语法非常相似。
自IDA5.4 发布以来 ,IDA 还通过集成由Gergely Erdelyi 开发的IDAPython插件来支持Python集成式脚本。
本章只会简单介绍 IDAPython 的内容,并不会介绍 IDC 语言,如果有兴趣,可以自己学习。
而且,IDAPython 可说的内容非常多,所以作者打算另开一个IDAPython系列,插入到当前这个系列中。
作者会介绍一种在 IDA 中更方便的使用 Python 的插件 - ipyida,可以理解为 ipyida是 IDAPython 的威力加强版。ipyida 可以视为一个额外的接口层,通过 Jupyter 提供更友好的用户界面和可视化功能。
读者可以通过直接复制下面的命令,并且粘贴到Python 交互栏中就可以安装。下面是 Python3 的安装命令(如果读者环境不是python3,可以使用 IDA 安装目录下的 idapyswitch.exe 来切换,或者直接使用 python2 的命令安装):
import urllib.request; exec(urllib.request.urlopen('<https://github.com/eset/ipyida/raw/stable/install_from_ida.py>').read())
注意,需要命令行可以访问 python 与 pip,因为安装脚本需要。如果不能访问,请安装后,配置环境变量。
如果有安装有什么其他问题,可以访问该项目的 github 主页。
数分钟内应该就能完成安装。
安装完毕之后从菜单 EDIT-PLUGINS-ipyida 打开这个插件(或者使用快捷键 shift + .),会出现一个窗口:

这显然比 Python 交互栏要功能强大。按“?”键可以查看快捷使用手册。
Ipython 有很多内容。按 ESC 键退出手册。
按 TAB 键,它会根据输入自动补齐,这个功能非常友好(和 linux 下的 shell 感觉类似)。