[發(fā)明專(zhuān)利]一種基于Windows操作系統(tǒng)的軟件無(wú)限斷點(diǎn)設(shè)置方法有效
| 申請(qǐng)?zhí)枺?/td> | 201811289072.7 | 申請(qǐng)日: | 2018-10-31 |
| 公開(kāi)(公告)號(hào): | CN109471800B | 公開(kāi)(公告)日: | 2021-09-07 |
| 發(fā)明(設(shè)計(jì))人: | 薛惠鋒;陳漠;閆陳靜;張偉;顧升高 | 申請(qǐng)(專(zhuān)利權(quán))人: | 中國(guó)航天系統(tǒng)科學(xué)與工程研究院 |
| 主分類(lèi)號(hào): | G06F11/36 | 分類(lèi)號(hào): | G06F11/36 |
| 代理公司: | 中國(guó)航天科技專(zhuān)利中心 11009 | 代理人: | 武瑩 |
| 地址: | 100048*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 windows 操作系統(tǒng) 軟件 無(wú)限 斷點(diǎn) 設(shè)置 方法 | ||
一種基于Windows操作系統(tǒng)的軟件無(wú)限斷點(diǎn)設(shè)置方法,首先對(duì)被調(diào)試軟件設(shè)置若干斷點(diǎn),然后將斷點(diǎn)地址所在的內(nèi)存頁(yè)的屬性改為不可訪問(wèn),被調(diào)試軟件執(zhí)行過(guò)程中觸發(fā)頁(yè)面錯(cuò)誤異常并執(zhí)行到MmAccessFault()函數(shù)入口時(shí),判斷該頁(yè)面錯(cuò)誤異常的內(nèi)存地址是否是設(shè)置的斷點(diǎn),如果是則通過(guò)NtProtectVirtualMemory()函數(shù)修改斷點(diǎn)所在的內(nèi)存頁(yè)的屬性為可讀可寫(xiě)可執(zhí)行,并將開(kāi)啟單步調(diào)試模式,被調(diào)試軟件繼續(xù)執(zhí)行,當(dāng)觸發(fā)調(diào)試陷阱異常并執(zhí)行到Windows操作系統(tǒng)內(nèi)核的KiTrap01()函數(shù)的入口時(shí),通過(guò)NtProtectVirtualMemory()函數(shù)設(shè)置該斷點(diǎn)所在的內(nèi)存頁(yè)的屬性為不可訪問(wèn),恢復(fù)斷點(diǎn)設(shè)置,關(guān)閉單步調(diào)試模式,被調(diào)試軟件繼續(xù)執(zhí)行。
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)應(yīng)用技術(shù)軟件調(diào)試領(lǐng)域,具體涉及一種基于Windows操作系統(tǒng)的軟件無(wú)限斷點(diǎn)設(shè)置方法。
背景技術(shù)
隨著網(wǎng)絡(luò)攻擊技術(shù)的發(fā)展,計(jì)算機(jī)惡意軟件的數(shù)量和種類(lèi)呈現(xiàn)逐年上升的態(tài)勢(shì),其中大部分是基于Windows操作系統(tǒng)的惡意軟件。由于大部分惡意軟件無(wú)法獲得源代碼,計(jì)算機(jī)安全人員為了分析惡意軟件的工作原理,需要使用調(diào)試器設(shè)置斷點(diǎn)對(duì)惡意軟件的二進(jìn)制程序進(jìn)行動(dòng)態(tài)調(diào)試,以便獲得其結(jié)構(gòu)和內(nèi)部功能。
現(xiàn)有基于Windows操作系統(tǒng)的軟件調(diào)試器可設(shè)置斷點(diǎn)的類(lèi)型主要有兩種:一種是硬件斷點(diǎn),另一種是軟件斷點(diǎn)。硬件斷點(diǎn)由CPU處理器提供,但是由于CPU處理存儲(chǔ)單元有限,只能設(shè)置有限個(gè)(一般2到4個(gè))斷點(diǎn)。軟件斷點(diǎn)是通過(guò)調(diào)試器修改被調(diào)試軟件代碼,插入異常出發(fā)指令來(lái)實(shí)現(xiàn),可以設(shè)置無(wú)限多個(gè)斷點(diǎn)。但是由于很多惡意軟件檢測(cè)自身代碼是否被修改,來(lái)判斷調(diào)試器的存在,進(jìn)而退出運(yùn)行,令?lèi)阂廛浖o(wú)法被調(diào)試。
因此,需要一種可以解決以上問(wèn)題的基于Windows操作系統(tǒng)的軟件無(wú)限斷點(diǎn)設(shè)置方法。
發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問(wèn)題是:提供一種基于Windows操作系統(tǒng)的軟件無(wú)限斷點(diǎn)設(shè)置方法,能夠解決現(xiàn)有針對(duì)惡意軟件調(diào)試中可設(shè)置硬件斷點(diǎn)數(shù)量不多、軟件斷點(diǎn)設(shè)置容易被發(fā)現(xiàn)的問(wèn)題。
本發(fā)明的技術(shù)解決方案是:一種基于Windows操作系統(tǒng)的軟件無(wú)限斷點(diǎn)設(shè)置方法,包括步驟如下:
(1)在Windows操作系統(tǒng)下,通過(guò)調(diào)試器D對(duì)被調(diào)試軟件S設(shè)置若干斷點(diǎn),若干斷點(diǎn)內(nèi)存地址值的集合為P={p1,p2,..,pn},調(diào)試器將集合P的各個(gè)元素所在的內(nèi)存頁(yè)的屬性通過(guò)NtProtectVirtualMemory()函數(shù)改為不可訪問(wèn)PAGE_NOACCESS,轉(zhuǎn)入步驟(2),其中,pi為第i個(gè)斷點(diǎn)對(duì)應(yīng)的內(nèi)存地址值,pi、pi對(duì)應(yīng)的內(nèi)存頁(yè)可以相同;
(2)運(yùn)行被調(diào)試軟件S,當(dāng)被調(diào)試軟件S執(zhí)行過(guò)程觸發(fā)Windows頁(yè)面錯(cuò)誤異常并執(zhí)行到Windows操作系統(tǒng)內(nèi)核的MmAccessFault()函數(shù)的入口且未開(kāi)始執(zhí)行MmAccessFault()函數(shù)時(shí),執(zhí)行鉤子函數(shù)FuncA,轉(zhuǎn)入步驟(3);
(3)在鉤子函數(shù)FuncA中,通過(guò)寄存器EDI獲得引發(fā)Windows頁(yè)面錯(cuò)誤異常對(duì)應(yīng)的內(nèi)存地址值a1,然后與集合P的各個(gè)元素進(jìn)行比較,如果存在a1=pi,pi∈P,則成功觸發(fā)斷點(diǎn)pi,通知調(diào)試器D,轉(zhuǎn)入步驟(4);否則,未觸發(fā)斷點(diǎn),轉(zhuǎn)入步驟(7);
(4)通過(guò)NtProtectVirtualMemory()函數(shù)設(shè)置a1所在的內(nèi)存頁(yè)的屬性為PAGE_READWRITE和PAGE_EXECUTE,使得該內(nèi)存頁(yè)的屬性為可讀可寫(xiě)可執(zhí)行,并將標(biāo)志寄存器的TF標(biāo)志位置為1,開(kāi)啟單步調(diào)試模式,結(jié)束鉤子函數(shù)FuncA執(zhí)行,然后繼續(xù)執(zhí)行MmAccessFault()函數(shù),Windows操作系統(tǒng)處理完異常后,被調(diào)試軟件S繼續(xù)執(zhí)行,轉(zhuǎn)入步驟(5);
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于中國(guó)航天系統(tǒng)科學(xué)與工程研究院,未經(jīng)中國(guó)航天系統(tǒng)科學(xué)與工程研究院許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811289072.7/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- 同類(lèi)專(zhuān)利
- 專(zhuān)利分類(lèi)
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測(cè);錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過(guò)測(cè)試作故障硬件的檢測(cè)或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過(guò)處理作錯(cuò)誤檢測(cè)、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過(guò)軟件的測(cè)試或調(diào)試防止錯(cuò)誤
- 檢測(cè)Windows系統(tǒng)已知漏洞的方法和系統(tǒng)
- 一種對(duì)主機(jī)進(jìn)行管控的方法及系統(tǒng)
- 一種基于windows服務(wù)控制器的系統(tǒng)自動(dòng)運(yùn)行方法
- 處理windows update彈窗出現(xiàn)的方法和系統(tǒng)
- 檢測(cè)系統(tǒng)中已安裝應(yīng)用的方法和客戶(hù)端
- 一種Windows Phone手機(jī)數(shù)據(jù)的鏡像方法
- 在Windows下對(duì)Linux系統(tǒng)中無(wú)線通訊模塊調(diào)試數(shù)據(jù)抓取方法和系統(tǒng)
- 一種實(shí)現(xiàn)Windows系統(tǒng)自動(dòng)化安裝的系統(tǒng)及方法
- 一種基于Windows To Go的增強(qiáng)方法及系統(tǒng)
- 一種批量控制windows快速部署的工具及方法
- 一種基于應(yīng)用軟件散布的軟件授權(quán)與保護(hù)方法及系統(tǒng)
- 一種用于航空機(jī)載設(shè)備的軟件在線加載系統(tǒng)及方法
- 軟件構(gòu)建方法、軟件構(gòu)建裝置和軟件構(gòu)建系統(tǒng)
- 惡意軟件檢測(cè)方法及裝置
- 一種基于軟件基因的軟件同源性分析方法和裝置
- 軟件引入系統(tǒng)、軟件引入方法及存儲(chǔ)介質(zhì)
- 軟件驗(yàn)證裝置、軟件驗(yàn)證方法以及軟件驗(yàn)證程序
- 使用靜態(tài)和動(dòng)態(tài)惡意軟件分析來(lái)擴(kuò)展惡意軟件的動(dòng)態(tài)檢測(cè)
- 一種工業(yè)控制軟件構(gòu)建方法和軟件構(gòu)建系統(tǒng)
- 可替換游戲軟件與測(cè)驗(yàn)軟件的裝置與方法





