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