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 构建
IDA PRO:庆祝成立创新 30 周年的更多相关文章
- 安卓动态调试七种武器之孔雀翎 – Ida Pro
安卓动态调试七种武器之孔雀翎 – Ida Pro 作者:蒸米@阿里聚安全 0x00 序 随着移动安全越来越火,各种调试工具也都层出不穷,但因为环境和需求的不同,并没有工具是万能的.另外工具是死的,人是 ...
- IDA,IDA PRO 产品介绍
IDA理念这是我们在开发产品时竭尽全力遵循的理念--在此过程中,我们相信我们将开发出能够为您带来所需的可靠性.便利性和易用性的软件.没有什么能打败人脑因为我们知道一秒钟的洞察力仍然胜过百年的处理时间, ...
- 计算机病毒实践汇总六:IDA Pro基础
在尝试学习分析的过程中,判断结论不一定准确,只是一些我自己的思考和探索.敬请批评指正! 1. IDA使用 (1)搜索.下载并执行IDA Pro,对可执行程序lab05-01.dll进行装载,分别以图形 ...
- Ubuntu下安装IDA pro
预备 由于IDA pro只能装在32位环境下,如果是64位Ubuntu,需要运行如下命令安装32位的必备库. sudo dpkg --add-architecture i386 sudo apt-ge ...
- 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 ...
- android调试系列--使用ida pro调试so
1.工具介绍 IDA pro: 反汇编神器,可静态分析和动态调试. 模拟机或者真机:运行要调试的程序. 样本:阿里安全挑战赛第二题:http://pan.baidu.com/s/1eS9EXIM 2. ...
- android调试系列--使用ida pro调试原生程序
1.工具介绍 IDA pro: 反汇编神器,可静态分析和动态调试. 模拟机或者真机:运行要调试的程序. 样本:自己编写NDK demo程序进行调试 2.前期准备 2.1 准备样本程序(假设已经配置好 ...
- [转]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 ...
- IDA Pro使用技巧
DA Pro基本简介 IDA加载完程序后,3个立即可见的窗口分别为IDA-View,Named,和消息输出窗口(output Window). IDA图形视图会有执行流,Yes箭头默认为绿色,No箭头 ...
随机推荐
- 一些固化了的语音识别模块demo, 手机重力传感器获取
helloH5 这个软件里面有好多这个东东哦
- 在 Ubuntu 上安装 .NET SDK 或 .NET 运行时
在wsl Ubuntu 20.04上面安装dotnet链接 https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-ubuntu Ubun ...
- JAVA基础语法-day01
JAVA基础语法 1.注释 单行注释--// 多行注释--/* */ 文档注释--/** */ 2.标识符 只能大小写字母,$,下划线开头,其它不行. 3.数据类型 基本数据类型--整数,浮点,字符, ...
- PHP实现简单的socket与异步应用
1.socket应用 (1)简单概念 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 建立网络通信连接至少要一对端口号(socket).socket本质是编 ...
- 重新整理 .net core 实践篇—————配置文件之环境配置[九]
前言 在当今在互联网微服务比较适用的情况下,docker 可以说一个利器.每次我们打包docker的时候都是适用docker 的配置文件,那么配置文件里面会设置环境变量,这个时候需要我们的应用能够识别 ...
- Step By Step(Lua数据结构)
Step By Step(Lua数据结构) Lua中的table不是一种简单的数据结构,它可以作为其它数据结构的基础.如数组.记录.线性表.队列和集合等,在Lua中都可以通过table来表示. ...
- CVPR2020论文点评: AdderNet(加法网络)
CVPR2020论文点评: AdderNet(加法网络) 论文原文链接:https://arxiv.org/pdf/1912.13200.pdf 源码链接:https://github.com/hua ...
- ARM系列处理器和架构
从一只ARM到另一只ARM! ARM处理器和架构 当前可用的处理器 ARM1 ARM2 ARM3 ARM4和5 ARM6 ARM7 ARM8 强壮有力的ARM ARM9 ARM10 ARM架构 v1 ...
- AI芯片加速图像识别
AI芯片加速图像识别 AI chip accelerates image recognition 法国研究机构CEA-Leti和LIST在2020年VLSI研讨会上展示了一种概念验证芯片,该芯片集成了 ...
- 用Redis实现签到功能
一.场景 在很多时候我们会遇到用户签到的场景,每天用户进入应用时,需要获取用户当天的签到状态,如果没签到,用户可以进行签到,并且得到相关的奖励.我们可能需要每天的签到情况,必要的时候可能还需要统计一下 ...