更新時間:2022-08-26 來源:黑馬程序員 瀏覽量:
目標代碼插樁是指向目標代碼(二進制代碼)插入測試代碼獲取程序運行信息的測試方法,也稱為動態(tài)程序分析方法。再進行目標代碼插樁之前,測試人員要對目標代碼邏輯結(jié)構(gòu)進行分析,從而確認需要插樁的位置。
目標代碼插樁對程序運行時的內(nèi)存監(jiān)控、指令跟蹤、錯誤檢測等有著重要的意義。相比于邏輯覆蓋法,目標代碼插樁在測試過程中不需要代碼重新編譯或鏈接程序,并且目標代碼的格式和具體的編程語言無關,主要和操作系統(tǒng)相關,因此目標代碼插樁有著廣泛的使用。
1.目標代碼插樁的原理
目標代碼插樁法的原理是在程序運行平臺和底層操作系統(tǒng)之間建立中間層,通過中間層檢查執(zhí)行程序、修改指令,開發(fā)人員、軟件分析工程師等對運行的程序進行觀察,判斷程序是否被惡意攻擊或者出現(xiàn)異常行為,從而提高程序的整體質(zhì)量。
2.目標代碼插樁法的執(zhí)行模式
由于目標代碼是可執(zhí)行的二進制程序,因此目標代碼的插樁可分為兩種情況:一種是對未運行的目標代碼插樁,從頭到尾插入測試代碼,然后執(zhí)行程序。這種方式適用于需要實現(xiàn)完整系統(tǒng)或仿真時進行的代碼覆蓋測試。另一種情況是向正在運行的程序插入測試代碼,用來檢測程序在特定時間的運行狀態(tài)信息。
目標代碼插樁具有以下3種執(zhí)行模式。
(1)即時模式(Just-In-Time):原始的二進制或可執(zhí)行文件沒有被修改或執(zhí)行,將修改部分的二進制代碼生成文件副本存儲在新的內(nèi)存區(qū)域中,在測試時僅執(zhí)行修改部分的目標代碼。
(2)解釋模式(Interpretation Mode):在解釋模式中目標代碼被視為數(shù)據(jù),測試人員插入的測試代碼作為目標代碼指令的解釋語言,每當執(zhí)行一條目標代碼指令,程序就會在測試代碼中查找并執(zhí)行相應的替代指令,測試通過替代指令的執(zhí)行信息就可以獲取程序的運行信息。
(3)探測模式(Probe Mode):探測模式使用新指令覆蓋舊指令進行測試,這種模式在某些體系結(jié)構(gòu)(如x86)中比較好用。