IDA Pro

IDA Pro

互動式反彙編器專業版(Interactive Disassembler Professional),人們常稱其為IDA Pro,或簡稱為IDA。是目前最棒的一個靜態反編譯軟體,為眾多0day世界的成員和ShellCode安全分析人士不可缺少的利器!IDA Pro是一款互動式的,可程式的,可擴展的,多處理器的,交叉WindowsLinux WinCE MacOS平台主機來分析程式, 被公認為最好的花錢可以買到的逆向工程利器。IDA Pro已經成為事實上的分析敵意代碼的標準並讓其自身迅速成為攻擊研究領域的重要工具。它支持數十種CPU指令集其中包括Intel x86x64MIPSPowerPCARMZ80,68000,c8051等等。

基本介紹

  • 中文名:互動式反彙編器專業版
  • 外文名:Interactive Disassembler Professional
  • 縮寫:IDA Pro
  • 總部:比利時列日市
軟體簡介,反盜版策略,版本,許可證,支持資源,安裝,目錄的結構,用戶界面,

軟體簡介

互動式反彙編器專業版(Interactive Disassembler Professional),人們常稱其為IDA Pro,或簡稱為IDA,是總部位於比利時列日市(Liège)的Hex-Rayd公司的一款產品。開發IDA的是一位編程天才,名叫Ilfak Guilfanov。十年前誕生時,IDA還是一個基於控制台的MS-DOS應用程式,這一點很重要,因為它有助於我們理解IDA用戶界面的本質。除其他內容外,IDA的非Windows和非GUI版本仍然繼續採用源於最初DOS版本的控制台形式的界面。
就其本質而言,IDA是一種遞歸下降反彙編器。但是,為了提高遞歸下降過程的效率,IDA的開發者付出了巨大的努力,來為這個過程開發邏輯。為了克服遞歸下降的一個最大的缺點,IDA在區分數據與代碼的同時,還設法確定這些數據的類型。雖然你在IDA中看到的是彙編語言形式的代碼,但IDA的主要目標之一,在於呈現儘可能接近原始碼的代碼。此外,IDA不僅使用數據類型信息,而且通過派生的變數和函式名稱來盡其所能地注釋生成的反彙編代碼。這些注釋將原始十六進制代碼的數量減到最少,並顯著增加了向用戶提供的符號化信息的數量。
IDA PRO簡稱IDA(Interactive Disassembler) ,是一個世界頂級的互動式反彙編工具,有兩種可用版本。標準版(Standard)支持二十多種處理器。高級版(Advanced)支持50多種處理器。
IDA PRO不存在任何註冊機、註冊碼或破解版,除了測試版和一個5.0 的免費版外,網路上能下載的都是包含用戶許可證的正版,因為所有的安裝包都是OEM版,所以IDA官網不提供軟體下載,並且軟體也沒有註冊的選項(可以正常使用,但這也是一種盜版侵權的行為)。

反盜版策略

IDA是Hex-Rays公司的旗艦產品。因此,他們對於未經授權就使用IDA的做法深惡痛絕。過去,該公司發現,盜版IDA的發布與公司銷售量的下滑有著直接的因果關係。為此,IDA的前發行公司DataRrscus甚至將盜版者的姓名張貼在他的“恥辱堂”(Hall of Shame)中。為打擊盜版,IDA採用了幾項反盜版技術,並實施了許可限制。
用戶需要了解的第一種技術是:每一份IDA都帶有水印,以將它與購買者一對一地對應起來。如果一份IDA出現在盜版軟體站中,Hex-Rays就能夠通過水印追蹤到購買者,並將其列入銷售黑名單。我們常常可以在Hex-Rays的IDA支持論壇上發現有關IDA 的“泄露”版本的討論。
為實施許可策略,IDA採用的另一種技術,是掃描在區域網路中運行的其他IDA程式。例如,Windows版本的IDA啟動後,它會在連線埠23945上廣播一個UDP包,並等待回響,看相同子網中是否有其他使用相同許可證密鑰的IDA實例在運行。然後,IDA會將得到的回響數量與使用該許可證的用戶數量進行比較,如果發現網路中存在過多的IDA實例,IDA會拒絕啟動,但是要注意,用戶可以在一台計算機上使用相同的許可證運行多個IDA實例。
IDA實施許可策略的最後一種方法,是使用密鑰檔案將每一名購買者與產品聯繫起來。在啟動時,IDA會搜尋一個有效的ida.key檔案。如果無法定位有效地密鑰檔案,IDA就會立即關閉。密鑰檔案還用於用戶升級IDA的資格。基本上,ida.key檔案就像是用戶的購買收據,要想在將來獲得升級資格,用戶必須保管好這個檔案。

版本

Hex-Rays為希望了解IDA基本功能的用戶提供了一個功能有限的免費版本,但是,該免費版本並不是工最新版本的功能。該免費版本為IDA4.9的簡化版,除免費版本外,Hex-Rays還提供當前版本的功能有限的演示版。如果你在討論逆向工程的地方發現的對於IDA的稱讚尚不足以吸引你購買IDA ,那么花一些時間熟悉免費版或演示版的功能,將有助於你了解IDA的強大功能及周到服務,促使你購買這一產品。
從功能上看,IDA Pro共有兩個版本:標準版和高級版。這兩個版本的主要區別,在於他們支持反彙編的處理器體系結構數量不同。快速瀏覽一下它們所支持的處理器體系結構列表,即可發現:標準版支持30多種處理器,而高級版則支持50多種處理器。高級版支持的其他體系結構包括Itanium、AMD64、MIPS、PPC和SPARC等。

許可證

IDA有兩種許可證。一種是已命名許可證,與某一特定的用戶有關,可安裝到該用戶使用的任意多個計算機上。另一種是計算機許可證,與某一台特定的計算機有關,任何使用該計算機的用戶都可以使用這種許可證,但一次只能允許一名用戶使用該許可證。注意,雖然已命名許可證可以讓你在任意多台計算機上安裝IDA軟體,但是只有你才能運行這些IDA軟體。而且,對於單個許可證,在某一給定的時刻,IDA只能在其中一台計算機上運行。
說明 與許多其他專有軟體的許可證不同,IDA的許可證特別賦予了用戶對IDA進行逆向工程的權利。
升級IDA
發布新版本的IDA後,Hex-RAYS通常會在IDA網站上公布升級連結和升級過程中的要求,該要求一般包括升級所適用的產品購買日期。一般情況下,在升級過程中,用戶必須向Aex-Rays提交ida.key檔案。然後,Hex-Rays會驗證用戶的密鑰,並提供如何獲得升級版本的詳細信息。如果你發現你的IDA版本過低,沒有升級資格,請記得利用Hex-Rays向過期的用戶提供的折扣升級價格。
如果不小心丟失密鑰檔案,未授權用戶可能會假冒你提出升級請求,導致你無法升級IDA.
最後,強烈建議在升級IDA時備份現有的IDA版本,或將升級版本安裝到一個完全不同的目錄,以避免丟失你修改的任何配置檔案。為了恢復你之前所做的任何修改,你可能需要編輯升級版本中的相應檔案。同樣,你還需要重新編譯或以替他形式獲得新版的IDA 定製外掛程式。

支持資源

作為一名IDA用戶,你可能想知道,如果遇到與IDA有關的問題,該從什麼地方需求幫助。如果我們做的還不錯的話,本文也許能夠解決用戶遇到的大多數問題。如果你需要額外的幫助,請參考下面一些常用的資源。
 正式的幫助文檔。IDA確實提供了Windows風格的幫助文檔,但是,該文檔主要介紹IDA的用戶界面和腳本子系統,它對於我們了解IDA,SDK(軟體開發工具包),以及解決類似於“我該如何處理.....”的問題並沒有多大幫助。
 Hex-Rays的支持頁面和論壇。Hex-Rayd運行著一個支持頁面,提供各種與IDA有關的資源的連結,包括針對得到許可證的用戶的線上論壇。用戶會發現,Ilfak經常訪問這些論壇,並親自解答問題。用戶可以通過這些論壇獲得SDK方面的非正式支持,因為在這裡,有許多經驗豐富的IDA用戶樂於根據他們自己的經驗為大家提供幫助。
有關如何使用SDK的問題,人們常常會告訴你“閱讀包含檔案”。但是,購買IDA產品,並不能獲得SDK方面的正式支持。不過,Hex-Rays倒是提供一個年度支持計畫,每年收費10000美元。要想了解SDK,Steve Micalle的著作IDA PLUG-IN WRITING IN C/C++是一個非常有用的資源。
 Openree.。openree是一個活躍的逆向工程社區,其中包含大量介紹IDA套用的文章,以及一些用戶論壇。與Hex-Rays網站上的論壇類似,Openree,org也吸引了許多經驗豐富的IDA用戶,他們常在論壇上與其他用戶彼此交流、分享經驗,也許能幫助你解決在使用IDA時遇到的問題。
 RCE論壇。逆向代碼工程(RCE)論壇中包含大量與使用IDA Pro有關的帖子。這個論壇的內容非常廣泛,其主體不僅涉及如何使用IDA Pro,而且涵蓋了許多用於對二進制檔案進行逆向工程的工具和技巧。
 IDA Palace。IDA Palace是一個專門提供IDA相關資源的網站。在這網站上,訪問者可以找到大量介紹如何使用IDA的文章的連結,以及用於擴展IDA功能的腳本和外掛程式。
 Ilfak的部落格。Ilfak的部落格中包含許多詳細介紹IDA用法的文章,可幫助用戶解決通用反彙編、調試及惡意軟體分析等各種問題。

安裝

從收到嶄新的IDA光碟的興奮中平靜下來後,開始安裝IDA吧。在打開光碟後,你會看到一下很多內容,這裡的EXE檔案(ida52.exe)是Windows安裝檔案。OSX和Linux目錄分別包含針對OS X和Linux系統的IDA安裝程式的tar壓縮檔案gzip)。Sdk目錄包括IDA SDK,還有他幾個實用工具。
Windows
在Windows系統上安裝IDA非常簡單。啟動IDA的Windows安裝程式後,你會看到幾個對話框,其中只有一個對話框需要你操作。你可以在這個對話框中知道IDA的安裝目錄,或接受安裝程式默認的安裝目錄。在IDA目錄中,你將發現密鑰檔案ida.key和下列IDA 執行檔。
 Idag.exe: IDA的Window GUI版本。
 Idaw.exe: IDA的Iindows文本模式版本。
OSX和Linux
要在OSX或Linux系統上安裝IDA,首先必須用gunzip和untar程式解壓相應的壓縮檔案。在Linux系統中,解壓命令為:
# tar –xvzf linux52adv.gz
在OS X系統中,解壓命令為:
# tar –xvzf Ogx52adv.gz
無論是哪一種情況,你將得到一個名為idaavd或idastd的頂層目錄(取決於你購買的版本)。完成IDA的解壓後,需要將密鑰檔案有Windows安裝目錄複製到新的IDA目錄中。另外,你可以創建一個名為﹩HOME/.idapro的目錄,並將密鑰檔案複製到新目錄中。
在OS X和Linux系統中,執行檔的名稱均為idal,而且,它們僅提供類似於idaw.exe的文本模式的界面。IDA的Linux版本需要libstdc++.so5才能運行,因此必須確保系統上安裝有libstdc++.so5。

目錄的結構

在可是使用IDA之前,你不一定需要熟悉IDA安裝目錄的結構。但是,既然現在討論的主題是安裝IDA ,還是初步了解一下安裝目錄的基本結構。在本書的後續章節,我們將接受IDA的高級功能,到那時,了解IDA安裝目錄的結構將變得更加重要。下面簡要介紹IDA安裝目錄中的各個子目錄。
 Cfg。Cfg目錄包含各種配置檔案,包括基本IDA配置檔案ida,cfg、GUI配置檔案idagui.cfg以及文本模式用戶界面配置檔案idatui,cfg。我們將在後面的章節介紹IDA的一些更加重要的配置功能。
 Idc。Idc目錄包含IDA的內置腳本語言IDC所需的核心檔案。我們將在後面詳細介紹如何使用IDC便攜腳本。
 Ids。Ids目錄中包含一些符號檔案(IDA語法中的IDS檔案),這些檔案 用於描述可被載入在到IDA的二進制檔案引用的共享庫的內容。這些DIS檔案包含摘要信息,其中列出了有某一個指定庫導出的所有項目。這些項目包含描述某個函式所需的參數類型和數量的信息、函式的返回類型(如果有)以及與該函式的調用約定有關的信息。
 Ioaders。Ioaders目錄包含在檔案載入過程中用於識別和解析PE或ELF等一直檔案格式的IDA擴展。
 Procs。Procs目錄包含已安裝的IDA版本所支持的處理器模組。處理器模組為IDA提供機器語言-彙編語言轉換功能,並負責生成在IDA用戶界面中顯示的彙編語言。
 Sig。Sig目錄包含IDA在各種模式匹配操作中利用的現有代碼的簽名。通過模式匹配,IDA能夠將代碼序列確定為一直的庫代碼,從而節省大量的分析時間。這些簽名有IDA 的“快速的庫識別和鑑定技術”(FLIRT)生成,這一內容將在第12章詳細介紹。
 Til。til目錄包含一些類型庫信息,DIA通過這些信息記錄特定於各種編譯器庫的數據結構的布局。我們講在第13章詳細介紹如何定製IDA類型庫。

用戶界面

IDA從MS-DOS繼承的特性至今仍然十分明顯。無論使用哪一種界面(文本界面或GUI),IDA都大量用到熱鍵。雖然這並非壞事,但是,如果你想當然地認為自己正使用文本輸入模式,並且發現幾乎每一次點擊都會導致相當意外的後果,那就說明IDA執行了某種熱鍵操作。例如,在使用GUI時,如果你定位游標以進行修改,並且希望你輸入的內容全部出現在游標位置,這是就可能會出現令人意外的情況(IDA可不像字處理程式)。
從數據輸入的角度看,IDA通過對話框接受所有輸入。因此,如果你希望在IDA中輸入任何數據,則必須調出輸入數據的對話框。
最後,需要記住的是:IDA不提供撤銷功能,因為你根本找不到。同樣,你也無法找到命令歷史記錄列表,以查明你剛剛執行的操作。
如果你是一名非Windows用戶,並且希望使用IDA的GUI界面,基本上,你有兩種選擇。Linux用戶可以考慮使用WINE。據稱,IDA可以在WINE下成功運行。就第二個選擇,使用主機作業系統只的虛擬軟體,在Windows虛擬機中運行IDA。無論採用哪一種選項,都需要運行IDA的Windows版本。因此,如果選擇使用IDA的內置調試器進行本地調試(下對於遠程調試),你只能調試Windows執行檔。

相關詞條

熱門詞條

聯絡我們