2.IDA-数据显示窗口(反汇编窗口、函数窗口、十六进制窗口)
生活随笔
收集整理的這篇文章主要介紹了
2.IDA-数据显示窗口(反汇编窗口、函数窗口、十六进制窗口)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
當(dāng)IDA加載后,3個(gè)立即可見的窗口分別為IDA-View窗口、函數(shù)窗口和消息輸出窗口,所有窗口都可通過View?Open Subviews菜單打開
反匯編窗口
反匯編窗口也叫IDA-View窗口,它是操作和分析二進(jìn)制文件的主要工具0.在反匯編窗口中,ESC鍵的作用與Web瀏覽器的“后退”按鈕類似,遺憾的是,在打開的其他窗口中,ESC鍵用于關(guān)閉窗口
IDA使用術(shù)語流來表示某個(gè)指令如何繼續(xù)執(zhí)行。正常流(也叫做普通流)表示指令默認(rèn)連續(xù)執(zhí)行。跳轉(zhuǎn)流表示當(dāng)前的指令跳轉(zhuǎn)到(或可能跳轉(zhuǎn)到)某個(gè)非連續(xù)性位置。調(diào)用流表示當(dāng)前指令會調(diào)用一個(gè)子例程。
圖形視圖
圖形視圖會讓人聯(lián)想到程序流程圖,因?yàn)樗鼘⒁粋€(gè)函數(shù)分解成許多基本塊,以生動顯示該函數(shù)由一個(gè)塊到另一個(gè)塊的控制流程。1.IDA使用不同的彩色箭頭區(qū)分函數(shù)塊之間各種類型的流。 根據(jù)測試條件, 在條件跳轉(zhuǎn)位置終止的基本塊可能會生成兩種流: Yes邊的箭頭(是的,執(zhí)行分支)默認(rèn)為綠色,No邊的箭頭(不,不執(zhí)行分支)默認(rèn)為紅色。 只有一個(gè)后繼塊的基本塊會利用一個(gè)正常邊(默認(rèn)為藍(lán)色)指向下一個(gè)即將執(zhí)行的塊。
2.可以使用“CTRL+鼠標(biāo)滑輪”來調(diào)整圖形的大小: 在圖形模式下,IDA一次顯示一個(gè)函數(shù),鍵盤縮放控制需要使用“CTRL+加號鍵”來放大,或使用“CTRL+減號鍵”來縮小,大型或復(fù)雜的函數(shù)可能會導(dǎo)致圖形視圖變得極其雜亂,但圖形概況窗口會始終顯示完整的塊狀結(jié)構(gòu),并用一個(gè)虛線框指出你當(dāng)前所在的圖形區(qū)域。你可用鼠標(biāo)在概況窗口中拖動該虛線框,迅速調(diào)整到任何想到的位置。
3.平移操作: 除了使用“圖形概況”窗口迅速定位圖形外,你還可以通過單擊和拖動圖形窗口的背景來定位圖形,注意是背景,不要點(diǎn)到自身上了
4.重新調(diào)整塊位置: 通過單擊指定塊的標(biāo)題欄并將其拖動到一個(gè)新位置,用戶可以移動圖形中的每一個(gè)塊的位置
5.調(diào)整連接線: 在按下SHIFT鍵的同時(shí),在連接線的任何位置雙擊鼠標(biāo)(注意是雙擊),即可在該位置添加一個(gè)新頂點(diǎn),然后你就可以通過頂點(diǎn)改變連接線的轉(zhuǎn)向了
6.分組和折疊塊: 可以對塊分組,每個(gè)塊單獨(dú)分組,或者與其他塊一起分組(使用Ctrl選擇多塊),并可將分組后的塊折疊起來,以減少顯示的混亂程度。 折疊塊特別有用,可以幫助你追蹤已經(jīng)分析過的塊。要折疊塊,可以右擊塊的標(biāo)題欄,然后在出現(xiàn)的菜單上選擇“Group Nodes”。
7.打開行前綴: 要想顯示與每個(gè)反匯編行有關(guān)的其他信息,可以通過Options?General命令打開IDA常規(guī)選項(xiàng),然后在Disassembly選項(xiàng)卡的可用的反匯編行部分選擇相應(yīng)的選項(xiàng)
8.打開新的反匯編窗口: 如果你想要同時(shí)查看兩個(gè)不同函數(shù)的圖形,可以通過Views?Open Subviews?Disassembly命令打開另一個(gè)反匯編窗口。這樣打開的第一個(gè)反匯編窗口叫做IDA View-A。隨后的反匯編窗口叫做IDA View-B、IDAView-C,依次類推。每個(gè)反匯編窗口都獨(dú)立于其他窗口。你完全可以在一個(gè)窗口中查看一個(gè)圖形,在另一個(gè)窗口中查看文本列表,或者在3個(gè)不同的窗口中查看3個(gè)不同的圖形。
文本視圖
文本顯示窗口會呈現(xiàn)一個(gè)程序的完整反匯編代碼清單(而在圖形模式下一次只能顯示一個(gè)函數(shù)),用戶只有通過這個(gè)窗口才能查看一個(gè)二進(jìn)制文件的數(shù)據(jù)部分。圖形顯示窗口中的所有信息均以某種形式存在于文本顯示窗口中1.虛擬地址: 以[區(qū)域名稱]:[虛擬地址]這種格式顯示,如.text:004011C1
2.左邊箭頭: 實(shí)線箭頭表示非條件跳轉(zhuǎn),虛線箭頭則表示條件跳轉(zhuǎn),如果一個(gè)跳轉(zhuǎn)(條件或非條件)回到以前的某個(gè)地址,這時(shí)會使用粗線(實(shí)線或虛線),通常表示程序中存在循環(huán)
Proximity browser
使用小鍵盤的(0 Ins)和"+"、“-”組合切換,以圖形模式顯示程序調(diào)用圖 以下代碼為例: [cpp]?view plaincopy又如選中_main函數(shù):(注意全局變量也是一個(gè)node)
Proximity view的node僅顯示地址名(函數(shù)名或數(shù)據(jù)標(biāo)簽),不顯示反匯編,盡管如此,把鼠標(biāo)停留在一個(gè)node上將顯示一個(gè)提示窗口,上面列出了簡短的反匯編例表,如果 你想看完整的反匯編,那就只有切換模式了(num和+、或空格切換) Proximity view的node有三種:函數(shù)節(jié)(Function nodes)、數(shù)據(jù)節(jié)(data nodes?)、輔助節(jié)(auxiliar nodes)
函數(shù)窗口
用于列舉IDA在數(shù)據(jù)庫中識別的每一個(gè)函數(shù)對應(yīng)列:(可通過help搜索functions window查找) [cpp]?view plaincopy
十六進(jìn)制窗口
對應(yīng)Views?Open Subviews?Hex dump,十六進(jìn)制窗口可以配置為顯示各種格式,并可作為十六進(jìn)制編輯器使用,和在反匯編窗口中一樣,可以同時(shí)打開幾個(gè)十六進(jìn)制窗口。第一個(gè)叫做Hex View-A,第二個(gè)叫做Hex View-B,依次類推。0. 同步關(guān)聯(lián): 默認(rèn)情況下,第一個(gè)十六進(jìn)制窗口會與第一個(gè)反匯編窗口同步,你也可以通過在任一窗口中右擊選擊Synchronize
同步后,在一個(gè)窗口中滾動鼠標(biāo),另一個(gè)窗口也會滾動到相同的位置(同一個(gè)虛擬地址),選中地址會高亮
1.編輯: 右擊菜單,選擇Edit菜單項(xiàng)(F2)可將十六進(jìn)制窗口轉(zhuǎn)變?yōu)榫庉嬈?這時(shí)可以自由編輯,完成編輯后,你必須提交或取消更改才能返回查看模式(F2保存,ESC撤消)
選中一塊數(shù)據(jù),按CTRL+C可以復(fù)制,被選中的為灰色(不包括藍(lán)色部分),如下,選中的數(shù)據(jù)為34 FF FF FF B9 3(注意,最后是3,因?yàn)?3只有一半被灰)
2.其他進(jìn)制: 可以使用上圖中的Data Format菜單項(xiàng)選擇各種顯示格式,如1、2、4、8字節(jié)十六進(jìn)制,帶簽名的十進(jìn)制,或不帶簽名的十進(jìn)制整數(shù)及各種浮點(diǎn)格式。你可以使用Columns菜單項(xiàng)更改顯示的列數(shù),使用Text選項(xiàng)打開或關(guān)閉文本塊
3.??顯示 問號表示IDA無法識別給定的虛擬地址范圍內(nèi)的值,如果程序中包含一個(gè)bss節(jié),就會出現(xiàn)這種情況。通常,bss節(jié)并不占用文件的空間,但加載器會擴(kuò)展這一節(jié),以適應(yīng)程序的靜態(tài)存儲要求。
總結(jié)
以上是生活随笔為你收集整理的2.IDA-数据显示窗口(反汇编窗口、函数窗口、十六进制窗口)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.IDA-基本操作(改变Image B
- 下一篇: 3.IDA-数据显示窗口(导出窗口、导入