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