互動式反彙編器專業版(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...