[發明專利]一種數據流跟蹤方法有效
| 申請號: | 201310733715.3 | 申請日: | 2013-12-26 |
| 公開(公告)號: | CN103714288A | 公開(公告)日: | 2014-04-09 |
| 發明(設計)人: | 鄒德清;金海;袁勁楓 | 申請(專利權)人: | 華中科技大學 |
| 主分類號: | G06F21/52 | 分類號: | G06F21/52 |
| 代理公司: | 華中科技大學專利中心 42201 | 代理人: | 朱仁玲 |
| 地址: | 430074 湖北*** | 國省代碼: | 湖北;42 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 數據流 跟蹤 方法 | ||
1.一種數據流跟蹤方法,其特征在于,該方法基于模擬器進行數據流跟蹤的優化,包括對客戶操作系統指令進行反匯編的階段、編譯產生宿主機執行代碼的階段和最終代碼執行的階段,其中:
在對客戶操作系統指令進行反匯編的階段,模擬器對客戶操作系統指令進行反匯編的同時產生污點指令,污點指令為特定的編碼形式,固定大小為4個字節,包括操作碼(opcode)、源操作數、目的操作數以及ArgLogPos字段;
在編譯產生宿主機執行代碼的階段,對之前產生的污點指令進行編譯產生宿主機上運行的指令,每一個污點指令對應于一個處理函數,用于執行該污點指令代表的污點更新操作;
在最終代碼執行階段,開啟新的線程執行污點指令,進行污點跟蹤的操作,執行的過程就是逐條取出污點指令并調用污點指令處理函數。
2.根據權利要求1所述的數據流跟蹤方法,其特征在于,在所述客戶操作系統指令進行反匯編的階段,具體進行如下操作:
(1-1)取出客戶操作系統的一條指令進行反匯編;
(1-2)判斷當前客戶操作系統的指令是否會產生污點傳播;如果不會產生污點傳播,則轉入步驟(1-6);
(1-3)判斷當前客戶操作系統的指令是否包括內存操作數,即是否需要動態獲取內存操作數的地址;如果沒有包括內存操作數,則轉入步驟(5);
(1-4)在ArgLog共享緩存中分配一塊空間,用于后面保存動態獲取的內存操作數地址,將該空間在ArgLog中的地址寫入污點指令的ArgLogPos字段中;
(1-5)分析客戶操作系統的指令,編碼污點指令的opcode,源操作數和目的操作數字段;
(1-6)判斷當前客戶操作是否還有指令需要進行翻譯;如果還有指令需要進行翻譯,則轉入步驟(1-1)。
3.根據權利要求1或2所述的數據流跟蹤方法,其特征在于,在編譯產生宿主機執行代碼的階段,具體進行如下操作:
(2-1)從第一階段生成的污點指令緩存中取出一條污點指令;
(2-2)判斷當前污點指令是否存在處理函數;如果已經存在處理函數,則轉入步驟(2-6);
(2-3)判斷當前污點指令是否需要動態獲取內存操作數地址;如果不需要,則轉入步驟(2-5);
(2-4)通知模擬器后端編譯TCG模塊,在運行過程中動態獲取需要的內存操作數地址寫入ArgLog指定的共享內存中;
(2-5)在處理函數代碼緩存中為污點指令編譯對應的處理函數;
(2-6)判斷是否還有污點指令需要進行處理;如果有,則轉入步驟(2-1)。
4.根據權利要求1至3任一項所述的數據流跟蹤方法,其特征在于,在編譯產生宿主機執行代碼的階段,具體進行如下操作:
(3-1)創建新的線程,調用污點跟蹤執行函數去執行污點跟蹤指令;
(3-2)線程在執行過程中,從污點指令緩存中取出一條污點指令,已污點指令為下標在處理函數緩存中尋址到對應的處理函數并調用執行;
(3-3)判斷當前污點指令需要的內存操作數地址是否已經在ArgLog緩存中;如果已經寫入,則轉入步驟(3-5);
(3-4)等待模擬器執行主線程將動態獲取的內存操作數地址寫入ArgLog緩存中;
(3-5)判斷污點指令是否執行完畢;如果沒有執行完畢,則轉入步驟(3-2);
(3-6)撤銷線程。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華中科技大學,未經華中科技大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310733715.3/1.html,轉載請聲明來源鉆瓜專利網。





