IDA PRO:庆祝成立创新 30 周年
今天,IDA 已经三十岁了。为了纪念周年纪念,我们将描述史诗旅程的开始和主要里程碑。
背景 在 1990 年代初期,DOS 是最流行的 PC 操作系统,主要是 8086,偶尔有 80286(80386 仍然非常昂贵)。典型的 PC 最多只有 1MB 的内存,留给密集任务的空间很小。然而,软件开发行业发展迅速,需要调试和诊断工具。除了调试器,反汇编器大多是基于批处理的(非交互式)。最受欢迎(也最昂贵)的是Sourcer通过 V 通信。它的交互性有限,因为它接受一个“定义文件”,其中包含开始反汇编点、可能的函数名称和分段信息的列表。每次更改定义文件后,整个文件的反汇编必须从头开始重新进行,这在当时可用的机器上可能需要很长时间。大多数运行时数据都保存在内存中(在 DOS 中最多 640KB),因此它可能会在处理大文件时失败。
有一些调试器可用于反汇编,但它们并没有真正提供 RE 功能,例如自定义名称或注释,因此深度 RE 通常在文本编辑器中或通过标记打印输出来完成。
IDA 提供了一个新的范例。它可以将一个文件一块一块地拆解,只加载用户正在查看的片段,而不需要将整个文件加载到内存中。重命名和注释是“及时”完成的,而不是在每次更改时重做整个反汇编。数据库保存了所有更改,因此可以随着时间的推移逐步执行工作。但是,这种方法需要时间才能得到用户的认可。
Ilfak Guilfanov(来自 IDA 2.05 历史文件,大约 1994 年?): 关于IDA的第一个想法诞生于1990年秋天,花了半年时间才鼓起足够的勇气开始实施。1991 年初,1 月,编写了第一行代码。1991 年 4 月,第一个程序被 IDA 完全反汇编。IDA 长大了,新的想法出现了。我想创建一个内置的 C 风格的语言来控制程序的分析,添加更多的处理器,反汇编目标文件,处理 UNIX COFF 文件,为 IDA 增加更多的智能等等......
唉,所有这些都没有实施。1991 年 7 月,我几乎完全停止了在 IDA 的工作,在 IDA 工作只是为了好玩。是时候了解更多有关其他计算机、网络和其他美好事物的信息了。今天,我将实现一些基于客户端-服务器架构并支持网络的东西(我对 X-windows 实现有一个疯狂的想法)在各种操作系统下工作——但我不会。暂时够了。我真的认为拆卸工和所有这样的工作人员已经过时了。人们使用 GUI 工作,用 C++ 编写(IDA 也是用 C++ 编写的,大约 40000 行);他们喜欢 VisualBasic 并在源代码中进行调试。今天的程序员甚至不知道汇编语言——也不需要知道它。
但…
我希望这个产品能对你有所帮助。如果是这样,我很高兴。希望,有些人需要这样的工具。如果需要向 IDA 添加新的处理器类型(英特尔 8085 也是如此),我可以做得足够快。
众所周知,反汇编器还没有(还?)过时。大多数计划中的功能最终确实被添加到 IDA 中,这不仅要感谢早年支持 IDA 并传播 IDA 信息的用户,还要感谢 DataRescue 等早期的发行商和支持者。
Pierre Vandevenne(DataRescue 首席执行官),2003 年: 当我发现 IDA 时,它是 30 美元。我知道如何识别划算的交易,并在半夜走到我的银行,将电汇订单放入他们的邮箱(互联网时代之前的东西)。极少数人,少得令人难以置信,当时做同样的事情。
[…]
2.05 版(我注册的那个)是由 Ilfak 开发的。
我们开始分发、支持开发和广告版本 3.05(基本上非常接近 2.05)。然后 Ilfak 加入了我们公司,搬到了比利时,GUI 版本迎来了曙光。
到 2008 年,第一个商业反编译器已经发布,IDA 的开发转移到了一个单独的公司,并且出现了第一个 IDA 商业插件。到目前为止,很明显二元分析远不是一个垂死的领域,我们希望 IDA 能够留下来庆祝更多的周年纪念日。当然,我们不打算停止创新。
完整的时间表 1990 年末 开发开始 (提到的核心源文件之一是在 1990 年 10 月 25 日创建的) 1991年 IDA 0.1(程序横幅上写着“5 月 20 日”,但似乎实际发布发生在一天之后) 档案
ida01.zip 长度日期时间名称 —————————————————— 24708 18-02-91 18:55 COMPRESS.EXE 11451 21-05-91 22:21 COMTYPES.DOC 76048 21-05-91 22:24 IDA.EXE 57344 21-05-91 22:23 IDA.INT 3581 06-05-91 17:36 IDAE.DOC 3795 06-05-91 16:22 IDAR.DOC 5976 27-05-91 18:17 自述文件 25080 18-02-91 19:07 REPAIR.EXE ————————— 207983 8 个文件
5 月 22 日:Microsoft 发布 Windows 3.09 月 17 日:Linus Torvalds 发布 Linux 发布公告 1993年 国际开发协会 1.8 (16/09/93) Turbo Vision 而不是自定义 UI 1994年 国际开发协会 2.0 添加了 IDC 脚本语言 开始共享软件分发(主要通过 FidoNet 和 BBS,一些 FTP) 支持附加处理器(8080、8085、Z80) 支持 NE 文件格式(16 位 Windows 和更高版本的 OS/2) 1994年 dcc 反编译器Cristina Cifuentes 的“反向编译技术”论文 1995年 8 月 15 日:Windows 95 发布 1996年 国际开发协会 3.6 FLIRT 标准运行库识别 Win32 控制台版本
DataRescue 开始在欧洲分发 IDA CSO 开始在北美分发 IDA 1999年 国际开发协会 3.84 (07/03/99) SDK 中添加了插件支持 IDA 4.0 (21/09/99) Windows GUI 版本(仅文本模式列表)。现在经典的 IDA 图标首次出现。 伊尔法克吉尔法诺夫的 IDA Pro 2000年 IDA 4.10 (19/06/2000) 类型系统(标准函数原型) PIT(参数识别和跟踪) 2001年 IDA 4.17 (22/03/2001) 使用 Wingraph 绘制图表和流程图
微码实验 2002年 4 月:Boomerang 反编译器开发开始http://boomerang.sourceforge.net/2004.php 6 月:Desquirr 反编译器插件发布http://desquirr.sourceforge.net/ 2003年 1 月:用户贡献的 Windows PE 调试器插件 (Idbg)
国际开发协会 4.5 (12/02/03) 集成调试器 IDA Win32 调试器 国际开发协会 4.6 (27/10/03) 64位地址空间支持;AMD64反汇编
五月:第一个反编译器在现实生活中的木马http://www.datarescue.com/laboratory/vd2.htm
2004年 国际开发协会 4.7 (30/08/04) 支持碎片化(分块)功能 Linux 控制台版本 远程跨平台调试 IDAPython 0.5.0 (07/08/04) 由 Gergely Erdelyi 发布
9 月:IDAPython在 Virus Bulletin 会议上发表 2005年 国际开发协会 4.8 (15/03/05) 64 位远程调试器
Hex-Rays SA 已注册。 Ilfak 开始在 hexblog.com 上发帖 12 月 14 日:WMF 漏洞零日攻击 12 月 31 日:Ilfak 的非官方漏洞修补程序变得非常流行 2006年 国际开发协会 5.0 (03/06) 内置图形视图
2007年 国际开发协会 5.1 英特尔 Mac OS X 调试器 基于 Simplex 的堆栈指针分析https://www.hex-rays.com/blog/simplex-method-in-ida-pro Hex-Rays Decompiler beta测试开启 (11/05/07) Hex-Rays Decompiler 1.0 (17/09/07) 发布 Hex-Rays Decompiler SDK (25/10/07) 发布
8 月 8 日:www.hex-rays.com 开通 2008年 1 月 1 日:Hex-Rays SA 接管 IDA 的开发
国际开发协会 5.3 多线程调试 iPhone、Symbian 调试器 IDAPython 1.0.0发布 开发转移到 Google Code 2009年 国际开发协会 5.4 Bochs、GDB、WinDbg 调试器 IDAPython 包含在 IDA 中 国际开发协会 5.5 可停靠窗口 现在经典的 IDA 布局的到来,在反汇编的左边有函数列表 国际开发协会 5.6 对 Linux 和 Mac 的 IDAPython 支持 64 位 Linux 和 Mac 调试器 ARM Linux 远程调试器 应用调用功能 2010年 国际开发协会 5.7 脚本化插件和处理器模块 ARM反编译器 国际开发协会 6.0 适用于 Windows、Linux 和 Mac 的基于 Qt 的跨平台 GUI 版本
2011年 漏洞赏金计划打开。6.0 和 5.7 的首次提交和修复 2012年 国际开发协会 6.3 源码级调试 2013年 国际开发协会 6.4 ARM64反汇编 2014年 国际开发协会 6.6 x64 反编译器 国际开发协会 6.7 反编译器 SDK 的 Python 绑定 2015年 国际开发协会 6.9 ARM64反编译器 ARM64 安卓调试器 2016年 国际开发协会 6.95 使用官方 Apple 调试服务器的 iPhone 调试器 PPC反编译器 2017年 国际开发协会 7.0 IDA 是适用于所有平台的本机 64 位可执行文件 2018年 国际开发协会 7.1 反编译微码 API 打开 国际开发协会 7.2 Lumina函数数据库 2019年 国际开发协会 7.3 PPC64反编译器 撤销功能 国际开发协会 7.4 Python 3 支持 2020年 国际开发协会 7.5 文件夹视图 MIPS反编译器 2021年 国际开发协会 7.6 本机 ARM64 macOS 构建