[發明專利]利用進程虛擬機反調試的方法、裝置、系統及存儲介質在審
| 申請號: | 202010145471.7 | 申請日: | 2020-03-04 |
| 公開(公告)號: | CN111309444A | 公開(公告)日: | 2020-06-19 |
| 發明(設計)人: | 陳鋼 | 申請(專利權)人: | 北京奇藝世紀科技有限公司 |
| 主分類號: | G06F9/455 | 分類號: | G06F9/455;G06F8/41 |
| 代理公司: | 北京華夏泰和知識產權代理有限公司 11662 | 代理人: | 韓來兵;李雪 |
| 地址: | 100080 北京市海淀區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 利用 進程 虛擬機 調試 方法 裝置 系統 存儲 介質 | ||
本發明實施例涉及一種利用進程虛擬機反調試的方法、裝置、系統及存儲介質,該方法包括:利用預建立的虛擬編碼器將待保護程序編譯至預建立的進程虛擬機,獲取虛擬編碼程序;利用進程虛擬機中包含的保護進程對已經運行在進程虛擬機中的虛擬編碼程序進行調試。通過該方法,利用虛擬編碼器將待保護程序編譯至進程虛擬機中,并且在進程虛擬機中運行。保護進程直接對包含有待保護程序的虛擬編碼程序整體進行調試。調試過程中可以防止攻擊方調試待保護程序,因為一旦攻擊方將虛擬編碼程序“殺死”,則將導致程序運行停止,攻擊方無法得逞。整個待保護程序運行過程都有保護程序的調試,讓攻擊方無懈可擊,而且大大降低了開發成本。
技術領域
本發明實施例涉及計算機技術領域,尤其涉及一種利用進程虛擬機反調試的方法、裝置、系統及存儲介質。
背景技術
現有技術中,反調試和反反調試一直都是開發人員比較頭疼的事情。舉例而言,攻擊方會通過用ptrace()接口調試需要被保護地程序P以獲得P運行時的敏感信息。而防守方則會利用同時只有一個進程啟用ptrace()接口調試程序的特點,在程序P啟動時就先啟動一個進程A對自己進行調試,這樣就可以讓后來的攻擊方無法使用ptrace()接口做調試。攻擊方同樣會采取其他措施,實現反調試。例如,找到進程A,將其“殺死”,然后攻擊方進行調試P。防守方為了避免這種情況的發生,則進行升級。升級的方式有多種技術路線,其目的就是不讓攻擊方輕易的“殺死”進程A。典型的方案是:讓進程A在調試P時,在某些關鍵邏輯改變P的行為。
舉一個例子,P在軟件啟動時,校驗注冊碼SN。
P中有函數:
bool checkSN(sn){
if sn==md5(sn){
return true;
}
return false;
}
讓A在調試P時截獲函數checkSN(),將形參sn的值修改為md5(sn),這樣軟件運行時,checkSN()函數就能正確返回true了。軟件正常運行。
如果有攻擊者殺死了A,那么checkSN()中的if判斷會不成立,返回false,軟件不會繼續往下運行。
所以,攻擊者不能“殺死”A。而由于A在調試P,攻擊者也無法調試P。
雖然,在上述過程中,攻方無法在checkSN()函數運行結束之前殺死A。但卻可以等待checkSN()函數運行結束之后再“殺死”A。并在某個時刻獲得調試P的能力。
上述案例的攻防過程中,會發現防守方存在很大的弊端,例如進程A需要保持隔段時間就對P中的某些邏輯作出修改,才能保證A不被殺死。但是,隨著程序規模的逐漸擴大,想在P的所有邏輯中加入和A的互動,毫無疑問,其困難度將是非常巨大的,對于安全防護人員的技術能力、專業度的要求都將會非常高,成本也會大大增加。
發明內容
鑒于此,為解決現有技術中反調試的措施存在隨著程序規模的逐漸擴大,編寫難度增加,對開發人員的技術能力、專業度等要求高,而且成本大大增加的技術問題,本發明實施例提供一種利用進程虛擬機反調試的方法、裝置、系統及存儲介質。
第一方面,本發明實施例提供一種利用進程虛擬機反調試的方法,該方法包括:
利用預建立的虛擬編碼器將待保護程序編譯至預建立的進程虛擬機,獲取虛擬編碼程序;
利用進程虛擬機中包含的保護進程對已經運行在進程虛擬機中的虛擬編碼程序進行調試。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京奇藝世紀科技有限公司,未經北京奇藝世紀科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010145471.7/2.html,轉載請聲明來源鉆瓜專利網。





