為了在分析過(guò)程中為您提供幫助,IDA會(huì)跟蹤的程序不同部分之間 交叉引用(或 簡(jiǎn)稱(chēng)為 外部參照 )。 您可以檢查它們,導(dǎo)航它們,甚至添加自己的視圖以擴(kuò)大分析范圍并幫助IDA或反編譯器。
交叉引用的類(lèi)型
有兩類(lèi)交叉引用:
代碼:交叉引用指示兩個(gè)代碼區(qū)域之間的關(guān)系:
跳轉(zhuǎn):交叉引用表示有條件或無(wú)條件地將執(zhí)行轉(zhuǎn)移到另一個(gè)位置。
調(diào)用:交叉引用表示隱式返回到調(diào)用指令后的地址的函數(shù)或過(guò)程調(diào)用。
流:交叉引用指示從當(dāng)前指令到下一條指令的正常執(zhí)行流。 此外部參照類(lèi)型很少在IDA中明確顯示,但分析引擎已廣泛使用它,并且插件/腳本編寫(xiě)者需要意識(shí)到這一點(diǎn)。
數(shù)據(jù):交叉引用用于引用來(lái)自代碼或其他數(shù)據(jù)項(xiàng)的數(shù)據(jù):
讀取:交叉引用表示正在讀取該地址處的數(shù)據(jù)。
寫(xiě):交叉引用表示正在寫(xiě)入該地址處的數(shù)據(jù)。
偏移量:交叉引用表示已獲取但未明確讀取或?qū)懭氲捻?xiàng)目的地址。
當(dāng)在拆卸中使用某個(gè)結(jié)構(gòu)或?qū)⑵淝度氲搅硪粋€(gè)結(jié)構(gòu)中時(shí),將添加 結(jié)構(gòu) 交叉引用。
交叉引用類(lèi)型可以用單字母代碼表示。
檢查和瀏覽交叉引用
在圖形視圖中,代碼交叉引用顯示為代碼塊之間的邊(箭頭)。 您可以通過(guò)視覺(jué)上的箭頭或雙擊來(lái)導(dǎo)航。
在文本模式下,對(duì)當(dāng)前地址的交叉引用將作為注釋打印在該行的末尾。 默認(rèn)情況下,最多打印兩個(gè)參考。 如果還有更多,則顯示省略號(hào)(...)。 您可以在選項(xiàng)>常規(guī)…交叉引用選項(xiàng)卡中增加打印的交叉引用數(shù)量。
注釋中僅顯示明確的參考; 流交叉引用在文本模式下不顯示。 但是, 用虛線表示 沒(méi)有 流程交叉引用(代碼執(zhí)行流程的末尾)。 通常在無(wú)條件跳轉(zhuǎn)或返回之后可以看到它,但是在調(diào)用非返回函數(shù)之后也可以看到它。
要導(dǎo)航到交叉引用的來(lái)源,請(qǐng)雙擊或在注釋中的地址上按Enter。
捷徑
“X”這可能是最常見(jiàn)和最有用的快捷方式:按此快捷方式可查看 的 的交叉引用列表 光標(biāo)處 標(biāo)識(shí)符 。 從列表中選擇一個(gè)項(xiàng)目即可跳轉(zhuǎn)到該項(xiàng)目。 該快捷方式不僅適用于反匯編地址,而且適用于 堆棧變量 (函數(shù)中)以及 結(jié)構(gòu) 和 枚舉成員 。
“Ctri”–和“X” 的工作原理類(lèi)似,但是 顯示 的交叉引用列表 不管光標(biāo)在行中的什么位置,它都會(huì) 當(dāng)前地址 。 例如,當(dāng)您需要將當(dāng)前函數(shù)的調(diào)用者列表放在其第一條指令上時(shí),該列表很有用。
另一方面,顯示 中的交叉引用列表 當(dāng)前地址 。 從單個(gè)位置到多個(gè)其他位置有多個(gè)交叉引用是一種罕見(jiàn)的情況,但是在其中有用的一種情況是 開(kāi)關(guān) (表跳轉(zhuǎn)):在間接跳轉(zhuǎn)指令上使用此快捷方式可以使您快速查看并跳轉(zhuǎn)到任何一個(gè)開(kāi)關(guān)案件。
如果您忘記了快捷方式,或者只是喜歡使用鼠標(biāo),則可以在“跳轉(zhuǎn)”菜單(有時(shí)在上下文菜單)中找到相應(yīng)的菜單項(xiàng)。
以上就是關(guān)于交叉引用的相關(guān)內(nèi)容了
京ICP備09015132號(hào)-996 | 違法和不良信息舉報(bào)電話:4006561155
© Copyright 2000-2026 北京哲想軟件有限公司版權(quán)所有 | 地址:北京市海淀區(qū)西三環(huán)北路50號(hào)豪柏大廈C2座11層1105室
北京哲想軟件集團(tuán)旗下網(wǎng)站:哲想軟件 | 哲想動(dòng)畫(huà)