亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于二進(jìn)制代碼植入技術(shù)的軟件運(yùn)行時監(jiān)控方法與流程

文檔序號:12120557閱讀:來源:國知局

技術(shù)特征:

1.一種基于二進(jìn)制代碼植入技術(shù)的軟件運(yùn)行時監(jiān)控方法,具體步驟如下:

(1)提取函數(shù)調(diào)用關(guān)系:

利用靜態(tài)二進(jìn)制分析工具,提取被監(jiān)控軟件可執(zhí)行文件及其依賴庫文件中的函數(shù)調(diào)用關(guān)系,并將函數(shù)調(diào)用關(guān)系存儲到函數(shù)調(diào)用圖G(E,F)數(shù)據(jù)結(jié)構(gòu)中,其中,E表示有向邊的集合,F(xiàn)表示函數(shù)調(diào)用圖G(E,F)內(nèi)所有函數(shù)的集合;

(2)提取函數(shù)內(nèi)部控制流信息:

利用靜態(tài)二進(jìn)制分析工具,提取函數(shù)調(diào)用圖G(E,F)中每個函數(shù)的基本塊及控制流信息,并將基于基本塊的控制流信息存儲到控制流圖G(B,E)數(shù)據(jù)結(jié)構(gòu)中,其中,E表示有向邊的集合,B表示控制流圖G(B,E)中基本塊的集合;

(3)構(gòu)造一個有限狀態(tài)機(jī):

(3a)將狀態(tài)0添加到有限狀態(tài)機(jī)的狀態(tài)的非空有限集合S中;

(3b)對函數(shù)調(diào)用圖G(E,F)中的每個函數(shù)進(jìn)行編號,其中,第i個函數(shù)編號為i,記為fi;

(3c)將函數(shù)調(diào)用圖G(E,F)中的main(·)函數(shù)對應(yīng)的狀態(tài)1賦給有限狀態(tài)機(jī)的初始狀態(tài)S0;

(3d)對滿足fi∈F的函數(shù)fi,將狀態(tài)i-分別添加到有限狀態(tài)機(jī)的狀態(tài)集合S和有限狀態(tài)機(jī)的最終狀態(tài)集合A中;

(3e)對fi∈F、fj∈F的fi和fj,如果存在從函數(shù)fi指向函數(shù)fj的一條有向邊,則將以下狀態(tài)遷移添加到狀態(tài)遷移函數(shù)T中:

Z0=0,Z1=j(luò)→Nextstate[i]=狀態(tài)j

Z0=1,Z1=i→Nextstate[j]=狀態(tài)i

其中,Z0和Z1表示有限狀態(tài)機(jī)的輸入字母,Nextstate[i]表示狀態(tài)i的下一個狀態(tài),Nextstate[j]表示狀態(tài)j的下一個狀態(tài),i和j分別是函數(shù)fi和函數(shù)fj的編號;

(3f)對于所有的下一狀態(tài)為空的狀態(tài),將其下一狀態(tài)設(shè)置為狀態(tài)0;

(4)初始化表格TABbb:

將函數(shù)調(diào)用圖G(E,F)中的每個函數(shù)對應(yīng)一個控制流圖G(B,E),將函數(shù)調(diào)用圖G(E,F)中的每個函數(shù)對應(yīng)一個初始化的表格TABbb,其中,初始化表格TABbb中的第i行對應(yīng)控制流圖G(B,E)中第i個基本塊;每行包含三個字段index、offset、sucs,字段index表示第i個基本塊的索引,字段offset表示第i個基本塊的入口地址相對于第i個基本塊所在函數(shù)入口地址的相對偏移量,字段sucs表示第i個基本塊的后繼塊基本塊的索引;

(5)初始化表格TABstart和TABret:

(5a)當(dāng)被監(jiān)控軟件加載后,獲取函數(shù)調(diào)用圖G(E,F)中所有函數(shù)的入口地址;

(5b)將第i個函數(shù)的相關(guān)信息添加到表格TABstart的第i行中;其中,表格TABstart中的第i行對應(yīng)函數(shù)調(diào)用圖G(E,F)中的第i個函數(shù),每行包含三個字段addr、index、ptr,字段addr表示第i個函數(shù)的入口地址,字段index表示第i個函數(shù)的函數(shù)編號,字段ptr表示第i個函數(shù)對應(yīng)表格TABbb的指針;

(5c)將值0、-1、-1添加到表格TABret的第一行中,表格TABret中的每行對應(yīng)被監(jiān)控軟件執(zhí)行過程中,數(shù)調(diào)用圖G(E,F)中被調(diào)用的的函數(shù);

(6)初始化整型變量Cur_F和Cur_B:

將函數(shù)調(diào)用圖G(E,F)中main(·)函數(shù)的編號1賦給整型變量Cur_F,將該main(·)函數(shù)中第一個基本塊的編號1賦給整型變量Cur_B;

(7)植入代碼:

(7a)利用二進(jìn)制代碼的靜態(tài)植入工具,將包含監(jiān)控代碼的動態(tài)庫加載到被監(jiān)控軟件的進(jìn)程地址空間中;

(7b)根據(jù)函數(shù)名查找動態(tài)庫中的監(jiān)控函數(shù),并構(gòu)造對監(jiān)控函數(shù)的調(diào)用語句;

(7c)利用代碼植入工具,根據(jù)函數(shù)調(diào)用圖G(E,F)和控制流圖G(B,E)中的信息,分析被監(jiān)控軟件中的代碼植入點(diǎn);

(7d)將構(gòu)造的調(diào)用語句植入到對應(yīng)的代碼植入點(diǎn);

(8)監(jiān)控軟件運(yùn)行狀態(tài):

(8a)判斷被監(jiān)控軟件是否執(zhí)行到函數(shù)調(diào)用圖G(E,F)中某個函數(shù)的入口位置,若是,則執(zhí)行步驟(8b),否則,執(zhí)行步驟(8f);

(8b)根據(jù)函數(shù)入口地址查表格TABstart,判斷函數(shù)入口地址是否在表格TABstart中,若是,則將對應(yīng)的函數(shù)編號和正整數(shù)0傳給有限狀態(tài)機(jī),執(zhí)行步驟(8c),否則,執(zhí)行步驟(9);

(8c)判斷有限狀態(tài)機(jī)接收的函數(shù)編號是否為1,若是,則執(zhí)行步驟(8d),否則,執(zhí)行步驟(8e);

(8d)將有限狀態(tài)機(jī)的當(dāng)前狀態(tài)設(shè)置為初始狀態(tài)S0,執(zhí)行步驟(8a);

(8e)判斷有限狀態(tài)機(jī)能否從當(dāng)前狀態(tài)遷移到接收編號對應(yīng)的狀態(tài),若是,則有限狀態(tài)機(jī)遷移到接收編號對應(yīng)的狀態(tài),并將步驟(8b)中所獲得的函數(shù)編號值賦給Cur_F,執(zhí)行步驟(8a),否則,有限狀態(tài)機(jī)遷移到無效狀態(tài)0,執(zhí)行步驟(9);

(8f)判斷被監(jiān)控軟件是否執(zhí)行到函數(shù)調(diào)用圖G(E,F)中函數(shù)內(nèi)call指令位置,若是,則執(zhí)行步驟(8g),否則,執(zhí)行步驟(8h);

(8g)將函數(shù)調(diào)用call指令后的下一條指令的地址添加到TABret中;將函數(shù)調(diào)用call指令所在函數(shù)的編號、所在基本塊的索引添加到TABret中,執(zhí)行步驟(8a);

(8h)判斷被監(jiān)控軟件是否執(zhí)行到函數(shù)調(diào)用圖G(E,F)中函數(shù)的出口點(diǎn),若是,則執(zhí)行步驟(8i),否則,執(zhí)行步驟(8l);

(8i)判斷表格TABret中最后一行中存儲的地址值是否為0,如是,則執(zhí)行步驟(9),否則,執(zhí)行步驟(8j);

(8j)判斷函數(shù)返回指令ret中返回地址值是否與表格TABret中最后一行中存儲的地址值一致,若是,則執(zhí)行步驟(8k),否則,執(zhí)行步驟(9);

(8k)將表格TABret最后一行對應(yīng)函數(shù)的編號和正整數(shù)1傳給有限狀態(tài)機(jī),判斷有限狀態(tài)機(jī)能否從當(dāng)前狀態(tài)遷移到接收編號對應(yīng)的狀態(tài),若是,則有限狀態(tài)機(jī)遷移到接收編號對應(yīng)的狀態(tài),并將表格TABret最后一行對應(yīng)函數(shù)的編號賦給整型變量Cur_F,表格TABret中最后一行中存儲的基本塊索引值賦給整型變量Cur_B,刪除表格TABret中的最后一條記錄,執(zhí)行步驟(8a),否則,有限狀態(tài)機(jī)遷移到無效狀態(tài)0,執(zhí)行步驟(9);

(8l)當(dāng)被監(jiān)控軟件執(zhí)行到控制流圖G(B,E)中基本塊的入口位置,計算該基本塊入口點(diǎn)相對于包含該基本塊的函數(shù)的入口點(diǎn)的相對偏移量;

(8m)判斷計算出來的偏移量是否為0,若是,則執(zhí)行步驟(8n),否則,執(zhí)行步驟(8o);

(8n)將正整數(shù)1賦給變量Cur_B,執(zhí)行步驟(8a);

(8o)判斷該偏量是否是Cur_B對應(yīng)基本塊的后繼塊中一個的偏移量,若是,則將該后繼塊的編號賦給整型變量Cur_B,執(zhí)行步驟(8a),否則執(zhí)行步驟(9);

(9)結(jié)束監(jiān)控。

當(dāng)前第2頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1