更新時間:2021年12月09日14時23分 來源:傳智教育 瀏覽次數(shù):
目標代碼插樁是指向目標代碼(二進制代碼)插人測試代碼獲取程序運行信息的測試方法,也稱為動態(tài)程序分析方法。在進行目標代碼插樁之前,測試人員要對目標代碼邏輯結(jié)構(gòu)進行分析,從而確認需要插樁的位置。
目標代碼插樁對程序運行時的內(nèi)存監(jiān)控、指令跟蹤、錯誤檢測等有著重要意義。相比于邏輯覆蓋法,目標代碼插樁在測試過程中不需要代碼重新編譯或鏈接程序,并且目標代碼的格式和具體的編程語言無關(guān),主要和操作系統(tǒng)相關(guān),因此目標代碼插樁有著廣泛的使用。
目標代碼插樁法的原理是在程序運行平臺和底層操作系統(tǒng)之間建立中間層,通過中間層檢查執(zhí)行程序、修改指令,開發(fā)人員、軟件分析工程師等對運行的程序進行觀察,判斷程序是否被惡意攻擊或者出現(xiàn)異常行為,從而提高程序的整體質(zhì)量。
由于目標代碼是可執(zhí)行的二進制程序,因此目標代碼的插樁可分為兩種情況:一種是對未運行的目標代碼插樁,從頭到尾插人測試代碼,然后執(zhí)行程序。這種方式適用于需要實現(xiàn)完整系統(tǒng)或仿真時進行的代碼覆蓋測試。另一種情況是向正在運行的程序插人測試代碼,用來檢測程序在特定時間的運行狀態(tài)信息。
目標代碼插樁具有以下3種執(zhí)行模式。
(1)即時模式(sus-In-Tme):原始的二進制或可執(zhí)行文件沒有被修改或執(zhí)行,將修改部分的二進制代碼生成文件副本存儲在新的內(nèi)存區(qū)域中,在測試時僅執(zhí)行修改部分的目標代碼。
(2)解釋模式(tepetation Mode):在解釋模式中目標代碼被視為數(shù)據(jù),測試人員插入的測試代碼作為目標代碼指令的解釋語言,每當(dāng)執(zhí)行一條目標代碼指令,程序就會在測試代碼中查找并執(zhí)行相應(yīng)的替代指令,測試通過替代指令的執(zhí)行信息就可以獲取程序的運行信息。
(3)探測模式(Probe Mode):探測模式使用新指令覆蓋舊指令進行測試,這種模式在某些體系結(jié)構(gòu)(如x86)中比較好用。
由于目標程序是可執(zhí)行的二進制文件,人工插人代碼是無法實現(xiàn)的,因此目標代碼插樁一般通過相應(yīng)的插樁工具實現(xiàn),插樁工具提供的API可以為用戶提供訪問指令。
常見的目標代碼插樁工具主要有以下2種。
(1) Pin-Dynamic Binary Instrumentation Tools(簡稱Pin)
Pin是由Intel公司開發(fā)的免費框架,它可以用于二進制代碼檢測與源代碼檢測。Pin支持IA-32、x86-64、MIC體系,可以運行在Linux、Windows和Android平臺。Pin具有基本塊分析器、緩存模擬器、指令跟蹤生成器等模塊,使用該工具可以創(chuàng)建程序分析工具、監(jiān)視程序運行的狀態(tài)信息等。Pin非常穩(wěn)定可靠,常用于大型程序測試,如fice辦公軟件、虛擬現(xiàn)實引擎等。
(2) DynamoRIO
DymamoRIO是一個許可的動態(tài)二進制代碼檢測框架,作為應(yīng)用程序和操作系統(tǒng)的中間平臺,它可以在程序執(zhí)行時實現(xiàn)程序任何部分的代碼轉(zhuǎn)換。DyamoRfIO 支持1A-32、AMD64、Arb64體系,可以運行在Limuy Windowus 和Adoid平臺。DyamRIO包含內(nèi)存調(diào)試工具、內(nèi)存跟蹤工具、指令跟蹤工具等。
猜你喜歡: