[發(fā)明專利]軟件運行時執(zhí)行恢復(fù)與重放方法無效
| 申請?zhí)枺?/td> | 200710049856.8 | 申請日: | 2007-08-27 |
| 公開(公告)號: | CN101154185A | 公開(公告)日: | 2008-04-02 |
| 發(fā)明(設(shè)計)人: | 梁曉;曹躍;李毅超;李曉冬;肖武 | 申請(專利權(quán))人: | 電子科技大學(xué) |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 610054四川*** | 國省代碼: | 四川;51 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 軟件 運行 執(zhí)行 恢復(fù) 重放 方法 | ||
1.軟件運行時執(zhí)行恢復(fù)與重放方法,其特征在于包括如下組成部件:
代碼注入部件:檢測點設(shè)置部件和執(zhí)行恢復(fù)部件都是以動態(tài)鏈接庫(DLL)的方式存在的,它們的功能獨立于目標二進制程序。為了能將檢測點設(shè)置與恢復(fù)的功能增加到目標二進制程序,必須通過代碼注入方式將動態(tài)鏈接庫的代碼遠程注入到目標二進制程序中,并按代碼的指令執(zhí)行相應(yīng)的功能。
函數(shù)攔截部件:操作系統(tǒng)內(nèi)核對象的狀態(tài)是進程狀態(tài)重要的一部分。微軟Windows系統(tǒng)將內(nèi)核對象的數(shù)據(jù)結(jié)構(gòu)保存在內(nèi)核空間中,而內(nèi)核空間不能由用戶線程直接訪問,如果需對內(nèi)核對象進行訪問和操作,必須通過系統(tǒng)提供的應(yīng)用程序接口(API)調(diào)用。因此保存系統(tǒng)內(nèi)核對象狀態(tài)的一個可行的方法是截獲對內(nèi)核對象進行訪問和操作的API。從截獲的API中可以獲知操作內(nèi)核對象的API調(diào)用、參數(shù)、返回值等,將他們都保存到檢查點文件中。當程序出現(xiàn)故障進行恢復(fù)時,將重新執(zhí)行保存的有關(guān)API調(diào)用,創(chuàng)建及操作內(nèi)核對象來恢復(fù)其狀態(tài)。函數(shù)攔截部件包含對系統(tǒng)進程、文件、注冊表、網(wǎng)絡(luò)等API函數(shù)的攔截。
檢測點設(shè)置部件:進程狀態(tài)由其用戶地址空間的狀態(tài)和內(nèi)核對象的狀態(tài)組成。因此檢測點設(shè)置部件分為用戶地址空間狀態(tài)的保存,內(nèi)核對象狀態(tài)的保存兩部分。
執(zhí)行恢復(fù)部件:執(zhí)行恢復(fù)部件利用檢測點設(shè)置部件記錄的進程用戶地址空間信息,以及函數(shù)攔截部件記錄的內(nèi)核對象操作信息,將目標二進制程序重新設(shè)置為對應(yīng)檢測點位置的狀態(tài)。
2.根據(jù)權(quán)利要求1所述的軟件運行時執(zhí)行恢復(fù)與重放方法,其特征在于:代碼注入部件利用CreateRemoteThread函數(shù),能夠容易的在另一個進程中創(chuàng)建線程。利用在目標進程中新創(chuàng)建的線程調(diào)用LoadLibrary函數(shù)來加載想要插入的DLL。該方法的基本操作步驟:使用VirtualAllocEx函數(shù),在目標進程的地址空間中分配內(nèi)存;使用WriteProcessMemory函數(shù),將DLL的路徑拷貝到第一步中分配的內(nèi)存中;使用GetProcAddress函數(shù),獲取在Kerne132.dll中的LoadLibraryA或LoadLibraryW函數(shù)的實際地址;使用CreateRemoteThread函數(shù),在目標進程中創(chuàng)建一個線程,它調(diào)用正確的LoadLibrary函數(shù),為它傳遞第一步中分配的內(nèi)存地址。
3.根據(jù)權(quán)利要求1所述的軟件運行時執(zhí)行恢復(fù)與重放方法,其特征在于:檢測點設(shè)置部件首先利用SuspendThread函數(shù)將目標二進制程序的所有應(yīng)用線程掛起;獲取并保存用戶地址空間布局以及區(qū)域或塊對應(yīng)的文件名;保存地址空間中可讀寫塊并已提交的數(shù)據(jù);保存用戶線程的上下文及線程局部存儲;保存用戶線程有關(guān)內(nèi)核對象的API跟蹤記錄;保存活動文件的信息;檢查點線程對所有應(yīng)用線程分別調(diào)用ResumeThread函數(shù)恢復(fù)其執(zhí)行,然后進入等待狀態(tài)直到下一次檢查點。
4.根據(jù)權(quán)利要求1所述的軟件運行時執(zhí)行恢復(fù)與重放方法,其特征在于:執(zhí)行恢復(fù)部件一致恢復(fù)進程用戶地址空間狀態(tài);以掛起方式創(chuàng)建除主線程之外的其它線程,恢復(fù)所有應(yīng)用線程的棧內(nèi)容,線程的上下文,線程局部存儲等。對線程局部存儲恢復(fù)的策略為:當線程創(chuàng)建并開始執(zhí)行時,通過TlsSetValue實現(xiàn)對應(yīng)線程局部存儲的恢復(fù);根據(jù)保存的API系統(tǒng)調(diào)用創(chuàng)建其他內(nèi)核對象,并通過重新執(zhí)行API恢復(fù)內(nèi)核對象狀態(tài);對于活動文件信息,重新打開這些文件并設(shè)置指針的位置;檢查點線程對所有應(yīng)用程序線程分別調(diào)用ResumeThread函數(shù)恢復(fù)其執(zhí)行。然后進入等待狀態(tài)直到下一次檢查點時刻。
5.根據(jù)權(quán)利要求1所述的軟件運行時執(zhí)行恢復(fù)與重放方法,其特征在于:
步驟(1),系統(tǒng)啟動目標二進制程序;
步驟(2),代碼注入部件將檢測點設(shè)置部件和執(zhí)行恢復(fù)部件注入到目標二進制程序的進程空間;
步驟(3),函數(shù)攔截部件監(jiān)控記錄進程、文件、注冊表、網(wǎng)絡(luò)等內(nèi)核對象的行為;
步驟(4),檢測點設(shè)置部件在程序運行過程中安裝檢測點;
步驟(5),得到恢復(fù)命令后;
步驟(6),執(zhí)行恢復(fù)部件將目標二進制程序的運行狀態(tài)恢復(fù)到對應(yīng)檢測點位置的狀態(tài)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于電子科技大學(xué),未經(jīng)電子科技大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200710049856.8/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 一種基于應(yīng)用軟件散布的軟件授權(quán)與保護方法及系統(tǒng)
- 一種用于航空機載設(shè)備的軟件在線加載系統(tǒng)及方法
- 軟件構(gòu)建方法、軟件構(gòu)建裝置和軟件構(gòu)建系統(tǒng)
- 惡意軟件檢測方法及裝置
- 一種基于軟件基因的軟件同源性分析方法和裝置
- 軟件引入系統(tǒng)、軟件引入方法及存儲介質(zhì)
- 軟件驗證裝置、軟件驗證方法以及軟件驗證程序
- 使用靜態(tài)和動態(tài)惡意軟件分析來擴展惡意軟件的動態(tài)檢測
- 一種工業(yè)控制軟件構(gòu)建方法和軟件構(gòu)建系統(tǒng)
- 可替換游戲軟件與測驗軟件的裝置與方法
- 以注射方式執(zhí)行死刑的自動執(zhí)行車的執(zhí)行床
- 過程執(zhí)行裝置、過程執(zhí)行方法以及過程執(zhí)行程序
- 用以執(zhí)行跳舞電子游戲的執(zhí)行系統(tǒng)及其執(zhí)行方法
- 策略執(zhí)行系統(tǒng)及其執(zhí)行方法
- 腳本執(zhí)行系統(tǒng)和腳本執(zhí)行方法
- 命令執(zhí)行設(shè)備、命令執(zhí)行系統(tǒng)、命令執(zhí)行方法以及命令執(zhí)行程序
- 程序執(zhí)行裝置、程序執(zhí)行系統(tǒng)以及程序執(zhí)行方法
- 處理執(zhí)行設(shè)備和由該處理執(zhí)行設(shè)備執(zhí)行的方法
- 有序任務(wù)的執(zhí)行方法、執(zhí)行裝置和執(zhí)行系統(tǒng)
- 執(zhí)行器(閥門執(zhí)行器)





