《IDA Pro權威指南》讀書筆記
IDA 6.1 預破解版 種子下載地址 http://thepiratebay.se/torrent/7686769/。 如果不能下了,谷歌搜尋 “Hex-Rays Ida Pro Advanced Edition v6.1.1 PreCracked”。
Names視窗:
F,常規函式
L, 庫函式
I,匯入的名稱。與庫函式的區別:沒有程式碼
G,命名程式碼
D,資料
A,字串資料。
用於自動生成名稱的一些常用字首包括以下一些:
sub_xxxxxx:地址xxxxxxx處的子例程
loc_xxxxxx:地址xxxxxx處的一個指令
byte_xxxxxx:位置xxxxxx處的8位資料
word:16位
dword:32位
unk_xxxxxx:位置xxxxxx處的大小未知的資料
x86 fastcall約定:是stdcall約定的一個變體,它向CPU暫存器(而非程式棧)最多傳遞兩個引數。 傳遞給函式的前兩個引數將分別位於ECX和EDX暫存器中。剩餘的其他引數則以類似stdcall約定的方式從右到左放入棧上。
push和pop會修改esp,要記住
在x86程式中,EBP暫存器通常專門用作棧幀指標。
bp-based frame:
push ebp ; save the caller's ebp value
mov ebp, esp ; make ebp point to the saved register value
sub esp, 76 ; allocate space for local variables
……
mov esp, ebp ; clears local variables by reseting esp
pop ebp ; restore the caller's value of ebp
ret ; pop return address to return to the caller
使用一個專用的幀指標,所有變數相對於幀指標暫存器的偏移量得以計算出來。正偏移量用於訪問函式引數,負偏移量用於訪問區域性變數。
反彙編清單可能會有錯誤,你可能需要對反彙編分析和顯示過程進行更多的控制。
IDA提供的程式碼轉換包括以下幾類:
將資料轉換為程式碼
將程式碼轉換為資料
指定一個指令序列為函式
更改現有函式的起始或結束地址
更改指令運算元的顯示格式
Edit->Array選單中,可以指定連續的資料空間為陣列。指定後,反彙編清單會更好看
為了位元組對齊,編譯器會插入幾個位元組
結構體在反彙編中看到的就是資料塊,並不知道是結構體。可以自己建立。
可以反彙編自己編寫一些程式來認識自己使用的編譯器得到的結果
編譯器會為每一個包含虛擬函式的類(或通過繼承得到的子類)生成一個表,其中包含指向類中每一個虛擬函式的指標。這樣的表就叫做虛表(vtable)。此外,每個包含虛擬函式的類都獲得另外一個資料成員,用於在執行時指向適當的虛表。這個成員通常叫做虛表指標(vtable pointer),並且是類中的第一個資料成員。
通過虛表的分析,可以看出兩個類間的關係。
如果兩個虛表包含相同數量的條目,則與這兩個虛表對應的類之間可能存在著某種繼承關係
如果類x的虛表包含的條目比類y多,則x可能是y的子類
如果x包含的條目也可以在y的虛表中找到,則必定存在下面一種關係:x是y的子類,y是x的子類,或者x和y全都是同一個超類z的子類。
如果x包含的條目也可以在類y的虛表中找到,並且x的虛表中至少包含一個純呼叫條目,而y的虛表中並沒有這個條目,那麼y是x的子類
程式碼交叉引用用於表示一條指令將控制權轉交給另一條指令。在IDA中,指令轉交控制權的方式叫做流(flow)。IDA中有3種基本流:普通流、跳轉流和呼叫流。j表示跳轉流jump,p表示呼叫,procedure。
資料交叉引用最常用的3種資料交叉引用分別用於表示某個位置何時被讀取、何時被寫入以及何時被引用。r字尾表示read cross-reference,w表示write,o表示偏移量交叉引用offset cross-reference。
常用快捷鍵:
g:jump to address
alt+t:搜尋
ctrl+t:搜尋下一個
ctrl+x:交叉引用列表
F5:反編譯成C偽碼
Mac OS X版的IDA沒有破解,目前只發現6.0的試用版。 Mac版的IDA能更好地識別objective-c函式,並且反彙編結果是AT&T語法,可以和windows版互補一起用。
相關文章
- 《IDA pro權威指南》閱讀筆記筆記
- 《Git權威指南》讀書筆記Git筆記
- 《IDA Pro權威指南(第2版)》編輯手記
- 《Angular權威教程》讀書筆記Angular筆記
- 讀書筆記【JS 權威指南】14.1 計時器筆記JS
- javascript權威指南閱讀筆記2JavaScript筆記
- 讀書筆記【JS 權威指南】14.2 瀏覽器定位和導航筆記JS瀏覽器
- HTML5權威指南讀書筆記25(完結)(第37章)--使用拖放HTML筆記
- 讀《Cassandra權威指南》
- 《802.11無線網路權威指南-網路概論》-- 讀書筆記2筆記
- [心得] JavaScript權威指南學習筆記JavaScript筆記
- MongoDB權威指南學習筆記03MongoDB筆記
- hbase權威指南閱讀隨手筆記二之過濾器筆記過濾器
- 《AngularJs權威指南》學習筆記---指令AngularJS筆記
- 資料倉儲工具箱-維度建模權威指南(第三版)讀書筆記筆記
- 《Java效能優化權威指南》的邊邊角(5)——被我們搬運的豆瓣讀書筆記Java優化筆記
- 《HTTPS權威指南》-協議學習筆記HTTP協議筆記
- 《Excelize 權威指南》新書釋出Excelize新書
- 好書短評之《SQL權威指南》SQL
- [原創]Java效能優化權威指南讀書思維導圖Java優化
- HTTP 1.x 學習筆記 —— Web 效能權威指南HTTP筆記Web
- JavaScript 權威指南(第六版)學習筆記JavaScript筆記
- 《Node.js開發指南》讀書筆記Node.js筆記
- 《IBM BPM實戰指南》讀書筆記IBM筆記
- [原創]Java效能優化權威指南讀書思維導圖2Java優化
- [原創]Java效能優化權威指南讀書思維導圖3Java優化
- [原創]Java效能優化權威指南讀書思維導圖4Java優化
- HTML5與CSS3權威指南筆記案例1HTMLCSSS3筆記
- 《JavaScript權威指南第六版》學習筆記-物件JavaScript筆記物件
- [圖靈贈書]《Java效能權威指南》轉發贈書圖靈Java
- Git權威指南Git
- HTTP權威指南HTTP
- 《Web應用安全權威指南》讀後有感Web
- 《Hadoop權威指南》-- mapreduce原理讀後感Hadoop
- 《Pro Android Graphics》讀書筆記之第一節Android筆記
- 《Pro Android Graphics》讀書筆記之第六節Android筆記
- 《Pro Android Graphics》讀書筆記之第三節Android筆記
- 《Pro Android Graphics》讀書筆記之第四節Android筆記