今天,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 构建

IDA PRO:庆祝成立创新 30 周年的更多相关文章

  1. 安卓动态调试七种武器之孔雀翎 – Ida Pro

    安卓动态调试七种武器之孔雀翎 – Ida Pro 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的,人是 ...

  2. IDA,IDA PRO 产品介绍

    IDA理念这是我们在开发产品时竭尽全力遵循的理念--在此过程中,我们相信我们将开发出能够为您带来所需的可靠性.便利性和易用性的软件.没有什么能打败人脑因为我们知道一秒钟的洞察力仍然胜过百年的处理时间, ...

  3. 计算机病毒实践汇总六:IDA Pro基础

    在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索.敬请批评指正! 1. IDA使用 (1)搜索.下载并执行IDA Pro,对可执行程序lab05-01.dll进行装载,分别以图形 ...

  4. Ubuntu下安装IDA pro

    预备 由于IDA pro只能装在32位环境下,如果是64位Ubuntu,需要运行如下命令安装32位的必备库. sudo dpkg --add-architecture i386 sudo apt-ge ...

  5. How to create an anonymous IDA PRO database (.IDB)

    Source: http://www.0xebfe.net/blog/2013/01/13/how-to-create-an-anonymous-ida-pro-database-dot-idb/ P ...

  6. android调试系列--使用ida pro调试so

    1.工具介绍 IDA pro: 反汇编神器,可静态分析和动态调试. 模拟机或者真机:运行要调试的程序. 样本:阿里安全挑战赛第二题:http://pan.baidu.com/s/1eS9EXIM 2. ...

  7. android调试系列--使用ida pro调试原生程序

    1.工具介绍 IDA pro: 反汇编神器,可静态分析和动态调试. 模拟机或者真机:运行要调试的程序. 样本:自己编写NDK demo程序进行调试 2.前期准备 2.1  准备样本程序(假设已经配置好 ...

  8. [转]How to create an anonymous IDA PRO database (.IDB)

    Source: http://www.0xebfe.net/blog/2013/01/13/how-to-create-an-anonymous-ida-pro-database-dot-idb/ P ...

  9. IDA Pro使用技巧

    DA Pro基本简介 IDA加载完程序后,3个立即可见的窗口分别为IDA-View,Named,和消息输出窗口(output Window). IDA图形视图会有执行流,Yes箭头默认为绿色,No箭头 ...

随机推荐

  1. STM32F4 SD卡升级程序

    http://www.openedv.com/posts/list/65104.htm

  2. JDK5.0新特性 (Day_07)

      JDK5.0新特性   目录 静态导入 自动装箱/拆箱 for-each循环 可变参数 枚举 JDK 5.0 新特性简介 JDK 5.0 的一个重要主题就是通过新增一些特性来简化开发,这些特性包括 ...

  3. Docker系列——Grafana+Prometheus+Node-exporter服务器告警中心(二)

    在前一篇博文中介绍,服务器监控已经部署成功.如果每天都需要人去盯着服务情况,那也不太现实.既然监控平台已经部署好了,是不是可以自动触发报警呢? 在上一篇Prometheus架构中有讲到,核心组件之一: ...

  4. CF1513F Swapping Problem(模型转化)

    题目描述 You are given 2 arrays a a a and b b b , both of size n n n . You can swap two elements in b b ...

  5. TVM在ARM GPU上优化移动深度学习

    TVM在ARM GPU上优化移动深度学习 随着深度学习的巨大成功,将深度神经网络部署到移动设备的需求正在迅速增长.与在台式机平台上所做的类似,在移动设备中使用GPU可以提高推理速度和能源效率.但是,大 ...

  6. Nsight Compute Profilier 分析

    profiler报告包含每次内核启动分析期间收集的所有信息.在用户界面中,它包含一个包含常规信息的标题,以及用于在报告页面或单个收集的启动之间切换的控件.默认情况下,报告以选定的详细信息页面开始. 页 ...

  7. 字节首推Java成长笔记:(原理+应用+源码+调优全都有)直接复盘

    今天这篇文章我为了帮助小伙伴们快速构建Java技术栈,这份笔记包含了Java技术点的答案,面经,笔记,希望大家看完可以在短期内容快速面试复盘,达到事半功倍! 本来想将文件上传到开源网站上去,但是文件太 ...

  8. 有了Java8的“+”真的可以不要StringBuilder了吗

    最近在头条上看到一篇帖子,说Java8开始,字符串拼接时,"+"会被编译成StringBuilder,所以,字符串的连接操作不用再考虑效率问题了,事实真的是这样吗?要搞明白,还是要 ...

  9. 文字识别OCR开源框架的对比--Tesseract vs EasyOCR

    ​ 前言: OCR文字识别在目前有着比较好的应用,也出现了很多的文字识别软件,但软件是面向用户的.对于我们技术人员来说,有时难免需要在计算机视觉任务中加入文字识别,如车牌号识别,票据识别等,因此软件对 ...

  10. docker4-docker网络,容器编排,集群部署

    1,docker网络 1.1,docker0 有三个网络环境,那么docker是如何处理容器网络访问的? 1.2,测试 docker run -d -p 80:8080 --name tomcat01 ...