[發明專利]一種基于Intel處理器跟蹤的反調試自動繞過方法有效
| 申請號: | 201811312225.5 | 申請日: | 2018-11-06 |
| 公開(公告)號: | CN109726115B | 公開(公告)日: | 2020-09-22 |
| 發明(設計)人: | 韓心慧;李冠成;陳永恒;李天一;武新逢 | 申請(專利權)人: | 北京大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京君尚知識產權代理有限公司 11200 | 代理人: | 司立彬 |
| 地址: | 100871 北*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 基于 intel 處理器 跟蹤 調試 自動 繞過 方法 | ||
1.一種基于Intel處理器跟蹤的反調試自動繞過方法,其步驟包括:
1)對于一目標程序,利用Intel處理器跟蹤技術獲取無調試器狀態下該目標程序的控制流;其中獲取控制流的方法為:通過HOOK內核獲取內核記錄自修改代碼和JIT代碼的代碼鏡像以及自修改完成時的時間戳,以用于后續對Intel處理器的記錄進行解碼,且解碼過程與該目標程序相結合獲得該目標程序的控制流;
2)對該目標程序調試過程中,將步驟1)得到的所述控制流與有調試器狀態下該目標程序的控制流進行比對自動檢測出該目標程序的基于調試器檢測的反調試技術及其所在位置;然后根據當前檢測到的反調試技術在其對應位置生成繞過該反調試技術的補丁。
2.如權利要求1所述的方法,其特征在于,步驟1)中,利用Intel處理器跟蹤技術獲取無調試器狀態下該目標程序在確定輸入下的控制流。
3.如權利要求2所述的方法,其特征在于,步驟1)中,控制該目標程序可能的所有的輸入,使其保持與調試時的輸入數據完全相同,得到該目標程序的控制流。
4.如權利要求1所述的方法,其特征在于,獲取自修改代碼和JIT代碼的代碼鏡像以及自修改完成時的時間戳的方法為:對該目標程序進行內存映射,當映射的內存為可寫可執行內存,則通過修改頁表移除頁面內存的可執行權限;當該頁面內存由于不可執行而產生頁故障時,將該頁面內存鏡像到一文件中,并記錄下鏡像的時間戳,然后賦予該頁面內存可執行權限,并移除其可寫權限。
5.如權利要求1所述的方法,其特征在于,將步驟1)得到的所述控制流以及目標程序的可執行文件進行匹配,識別出基于調試器干擾的反調試技術;然后通過覆蓋NOP的方式將其無效,以繞過所述基于調試器干擾的反調試技術。
6.如權利要求5所述的方法,其特征在于,識別出基于調試器干擾的反調試技術的方法為:首先預先定義基于調試器干擾的反調試技術的特征,建立模式數據庫;然后利用Intel處理器跟蹤技術和Binary進行控制流和數據流分析,獲取該目標程序調用的特征信息;將獲取的特征信息與模式數據庫中的特征進行比對,如果找到匹配的特征,則判定該目標程序中存在基于調試器干擾的反調試技術。
7.如權利要求5或6所述的方法,其特征在于,若成功檢測到基于調試器干擾的反調試技術,則重新執行步驟1),以獲取修改后的該目標程序的控制流。
8.如權利要求1所述的方法,其特征在于,對該目標程序調試過程中,對該目標程序可能的所有的輸入進行HOOK,使其與步驟1)時的輸出相同;HOOK調試器中所有會產生控制流變化的命令,使當前獲得的命令在執行的同時與步驟1)所獲取的控制流信息進行比對,自動檢測出該目標程序的基于調試器檢測的反調試技術及其所在位置;然后根據當前檢測到的反調試技術在其對應位置生成繞過該反調試技術的補丁。
9.如權利要求8所述的方法,其特征在于,通過HOOK調試器中所有會產生控制流變化的命令來完成控制流比對的方法為:該目標程序開始執行之前,在該目標程序的執行入口下自定義斷點,然后尋找接下來的分支指令,對其下自定義斷點;然后執行該目標程序并在每次斷點觸發時,首先去判斷該斷點是否為自定義斷點,如果不是,則停止調試器運行并交由用戶進行調試;如果是自定義斷點,則調試器將繼續尋找下一條分支指令并對其下自定義斷點,然后繼續執行直至觸發下一斷點。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京大學,未經北京大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811312225.5/1.html,轉載請聲明來源鉆瓜專利網。





