IDA PRO新手學習教程

2022-09-07 02:00:16 字數 3542 閱讀 4184

互動式反彙編器專業版(interactivedisassembler professional)簡稱為ida。ida pro是一款支援互動、可程式設計的、擴充套件外掛程式、支援多種處理器的逆向工程利器。

用到的軟體ida pro 

作為乙個初學者,盡量讓本文也從乙個初學者的角度講一些比較適合的內容,對於高手而言,價值深淺就見笑了。

ida開啟乙個win32的exe後,會出現一系列視窗,預設定位到「ida view」視窗中的入口函式處,即vc程式的winmain,

到這裡,最重要最艱難的反編譯工作已經被ida這個工具完成了,但逆向工程,遠不止這些。

接下來要來進行跟蹤除錯、修改 ,這就必須先學習如何使用這個ida工具,不過同時進行也是最好的學習方法。

在正式開始前,有2個實用的瀏覽快捷鍵需要記住,就是前進後退:

前進:ctrl+enter

後退:esc

當然也可以使用工具欄的按鈕:

,或選單:

1.主要視窗介紹:

ida作為乙個具有強大核心引擎和靈活輔助外掛程式的組合型工具,有太多地方需要去研究熟悉的,但是學習是乙個循序漸進、

由淺到深的過程,因此,本文從入眼就接觸到的視窗開始介紹,應該是條正確的道路。

1)ida view

該視窗可通過view-open subviews-disassembly調出:

該視窗有2種模式,一種是text view,另一種是graph view,2種大同小異, 關於兩種瀏覽模式的轉換,   可在右鍵選單

中切換:

·text view切換到graph view:(注意:在 text view中有時右鍵選單不是這樣的,這時換個有**的位置點右鍵就可以了)

·graphview切換到text view:

以下採用比較通用的text view為例來介紹,如下圖: 

主要是三個區域:位址區、opcode區(操作碼區)、反編譯**區

a.位址區

該處位址以pe檔案載入到記憶體後的虛擬位址為準,即映象基址+偏移位址,如例子的程式基址是0x00400000,

如圖中.text:0048feec位置資料如下:

該處位址是基址0x00400000 + 偏移位址8feec,假如我們使用winhex開啟檢視,可以看到偏移位址8feec 處的資料

如下:

可以看出,兩處資料是相同的,因此在winhex中修改 8feec 處的資料將會影響到ida中.text:0048feec處的資料。

高2g空間 (ring0級能訪問區域) :

0xffffffff-0xc0000000:1gb用於vxd、儲存器管理和檔案系統;

0xbfffffff-0x80000000:1gb共享的win32 dll、儲存器對映檔案和共享儲存區;

低2g空間(ring3許可權區域)

0x003fffff-0x00001000:為ms-dos系統 和 win16應用程式;

0x00000fff-0x00000000:為防止使用空指標的4,096位元組;

而對於pe檔案,pe頭的長度並不是固定的,當然有著同樣的解析標準,可也導致ida中偏移位址-基址不一定等於檔案位址,

判斷**在檔案中的基址很容易,通常pe頭在winhex中可以清晰的看到「this program cannot be run in dos.....」,之後就是

一些段名稱:如.text,.rdata。接著就是一小段00,之後出現資料的地方就是**基址,大部分是55 8b或56 8b等。

b.opcode區

該區域預設不會顯示出來,需要開啟選單options-general,

在「disassembly」頁中的「display disassembly  line parts」中,設定」number of opcode bytes「,例子中設定 8,預設為0則不顯示。

opcode區字面上看是操作碼區的意思,當然這是乙個以16進製制字元顯示二進位制資料的形式,這樣結合反編譯**會更具直觀性,

但也使介面複雜化,仁者見仁。

c.反編譯**區

·反編譯為c**:      在反彙編**中按f5即可。

d.跳轉指引區

該區域主要是顯示一些跳轉位址指引箭頭,作用簡單明瞭。

該視窗如下圖所示,與一般的16進製制編輯器類似。

預設為唯讀狀態,可使用快捷鍵f2對資料區域(綠色字元區域)在唯讀/編輯二種狀態間切換,也可以使用patch program功能來編輯(後面會介紹該功能)。

3)其他窗體

ida的窗體均可在主選單view-open subviews中開啟/關閉,其他如pseudocode為反編譯c**窗體、strings為程式字串列表視窗,均為十分有用的輔助視窗,以後再慢慢介紹

附:

1.啟用patch program(修改**)選單:

idagui.cgf中display_patch_submenu改為yes,即可將修改二進位制**的選單,

當然修改**的窗體中仍是以16進製制字元顯示,這個修改於alt+f2不一樣,可以將修改於原檔案的不同地方儲存到乙個dif檔案裡。 

2.快捷鍵:

在ida view中按f5可以生產c**檢視,  也可以將整個儲存為c檔案進行檢視。

在hex view中按f2可直接編輯16進製制資料。

選單options >> general

disassembly選項卡number of opcode bytes寫上非0,寫1好像沒啥用,只顯示1位根本沒用,16就差不多了

新手學習Cocoapods教程

cocoapods簡介 環境需求 1.ruby環境,安裝環境請移步 在終端輸入 驗證 出現最下面2行說明成功 安裝 輸入sudo gem install cocoapods 安裝成功!使用使用前,我們需要檢查一下類庫是否支援cocoapods 以afnetworking為例 輸入pod search...

IDA Pro權威指南學習筆記 一

一直不懂逆向,最近剛好不忙,於是學習逆向,用來做筆記,順便和大家分享交流.參考書籍 iad pro權威指南 工具 petools etools 是另一款很好的pe檔案編輯工具,以前曾發過 v1.5.400.2003 的漢化版,今天也來更新一下 peditor 功能有轉存程序 檢測可執行檔案加殼型別 ...

PostgreSQL新手教程

自從mysql被oracle收購以後,postgresql逐漸成為開源關係型資料庫的首選。本文介紹postgresql的安裝和基本用法,供初次使用者上手。以下內容基於debian作業系統,其他作業系統實在沒有精力兼顧,但是大部分內容應該普遍適用。1首先,安裝postgresql客戶端。sudo ap...