[發(fā)明專利]基于ebp構(gòu)造的棧棧幀內(nèi)容保護(hù)方法有效
| 申請(qǐng)?zhí)枺?/td> | 201410102934.6 | 申請(qǐng)日: | 2014-03-19 |
| 公開(公告)號(hào): | CN103870767B | 公開(公告)日: | 2017-02-01 |
| 發(fā)明(設(shè)計(jì))人: | 陳興蜀;李輝;張磊;王文賢;鄭炳倫 | 申請(qǐng)(專利權(quán))人: | 四川大學(xué) |
| 主分類號(hào): | G06F21/78 | 分類號(hào): | G06F21/78 |
| 代理公司: | 成都信博專利代理有限責(zé)任公司51200 | 代理人: | 卓仲陽 |
| 地址: | 610065 四川*** | 國省代碼: | 四川;51 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 ebp 構(gòu)造 棧棧幀 內(nèi)容 保護(hù) 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)安全技術(shù)領(lǐng)域,具體來講是一種基于ebp構(gòu)造的棧棧幀內(nèi)容保護(hù)方法。
背景技術(shù)
棧保存著程序在運(yùn)行過程中產(chǎn)生的數(shù)據(jù)以及用于函數(shù)調(diào)用與返回的控制信息,x86架構(gòu)下,相同特權(quán)級(jí)內(nèi)的函數(shù)調(diào)用不會(huì)引起棧切換,使得棧在發(fā)起調(diào)用的函數(shù)(調(diào)用者,caller)與被調(diào)用函數(shù)(被調(diào)用者,callee)之間共享。當(dāng)被調(diào)用函數(shù)在執(zhí)行時(shí),調(diào)用者運(yùn)行所需數(shù)據(jù)已經(jīng)存在于棧內(nèi),被調(diào)用者則可輕易獲取并修改這些信息。
在基于ebp(extended?base?pointer,拓展基址指針寄存器)構(gòu)造的棧中,每一次函數(shù)調(diào)用都產(chǎn)生一個(gè)棧幀(stack?frame),棧幀中保存著該次函數(shù)調(diào)用對(duì)應(yīng)參數(shù)、返回地址以及該函數(shù)在運(yùn)行過程中產(chǎn)生的數(shù)據(jù)。各個(gè)棧幀通過ebp連通,形如單向鏈表,鏈表表頭由當(dāng)前ebp寄存器指定。如圖1所示,包含三個(gè)函數(shù)棧幀A、B和C,所示函數(shù)調(diào)用順序?yàn)楹瘮?shù)C調(diào)用函數(shù)B,函數(shù)B調(diào)用函數(shù)A,系統(tǒng)當(dāng)前正在運(yùn)行函數(shù)A中的代碼。當(dāng)前ebp寄存器保存著棧幀A中的[ebp]?所在地址([ebp]表示壓入棧中的ebp寄存器,參照?qǐng)D1箭頭1所示),A.[ebp]則記錄著B.[ebp]所在地址,B.[ebp]中保存著C.[ebp]所在棧中的地址,形成形如ebp->A.[ebp]->B.[ebp]->C.[epp]的單向ebp鏈。函數(shù)A對(duì)應(yīng)棧幀為系統(tǒng)中的最新棧幀,函數(shù)A中的代碼便可通過上述關(guān)系去遍歷當(dāng)前系統(tǒng)中的所有棧幀,繼而讀取甚至修改各個(gè)棧幀的內(nèi)容。
當(dāng)前針對(duì)系統(tǒng)棧的保護(hù)主要集中在防護(hù)緩沖區(qū)溢出(buffer?overflow)和ROP(面向返回地址編程,return?oriented?programming)攻擊上,而忽略了棧幀內(nèi)容本身的安全性。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于ebp構(gòu)造的棧棧幀內(nèi)容保護(hù)方法,通過監(jiān)控系統(tǒng)棧中的已有ebp鏈,繼而攔截并修改被調(diào)用函數(shù)對(duì)棧幀所進(jìn)行的定位操作,使得被調(diào)用函數(shù)定位到錯(cuò)誤的內(nèi)存處,達(dá)到對(duì)原有棧幀的保護(hù)。
實(shí)現(xiàn)本發(fā)明目的的技術(shù)方案如下:一種基于ebp構(gòu)造的棧棧幀內(nèi)容保護(hù)方法,包括
初始化的步驟,包括
1.1?向內(nèi)核申請(qǐng)一個(gè)內(nèi)存頁,其首地址記為page;
1.2?將page對(duì)應(yīng)頁表項(xiàng)標(biāo)記為不存在;
當(dāng)函數(shù)調(diào)用發(fā)生時(shí),保存當(dāng)前ebp寄存器數(shù)值,并更改其值為指向page所在內(nèi)存頁的步驟,包括
2.1產(chǎn)生一個(gè)計(jì)數(shù)器i,初值賦為0;
2.2當(dāng)函數(shù)調(diào)用發(fā)生時(shí),保存當(dāng)前ebp寄存器數(shù)值為ebp_old,更改當(dāng)前ebp寄存器數(shù)值為ebp_new,使得ebp_new?=?page?+?i;
在被調(diào)用函數(shù)執(zhí)行期間,捕獲其對(duì)ebp鏈的定位操作并對(duì)被調(diào)用函數(shù)所定位的棧幀提供保護(hù)的步驟,包括
3.1若被調(diào)用函數(shù)通過ebp鏈去定位系統(tǒng)之前的已有棧幀,則觸發(fā)缺頁中斷;否則,等待函數(shù)調(diào)用返回;
3.2?在缺頁中斷處理中,判斷CR2寄存器數(shù)值是否等于ebp_new;若相等,則根據(jù)ebp_new數(shù)值計(jì)算其相對(duì)于page的偏移量i?=?ebp_new?–?page;若不相等,則等待函數(shù)調(diào)用返回;
3.3拷貝棧幀frame_i的內(nèi)容到其它內(nèi)存處形成影子棧幀frame_i_shadow;
3.4累加計(jì)數(shù)器i,即i?=?i?+?1;
3.5將page?+?i賦值給frame_i_shadow.[ebp];
3.6通過指令模擬操作,將被調(diào)用函數(shù)對(duì)上述棧幀的定位操作重定向到frame_i_shadow.[ebp]所在地址處,形成虛擬ebp鏈;
3.7?轉(zhuǎn)步驟3.1;?
被調(diào)用函數(shù)執(zhí)行完成返回時(shí),查看棧幀內(nèi)容和恢復(fù)的步驟,包括
4.1比較各個(gè)影子棧幀frame_i_shadow與原有棧幀frame_i的內(nèi)容,查看其內(nèi)容是否被更改;
4.2將保存的ebp_old數(shù)值恢復(fù)到當(dāng)前ebp寄存器中。
進(jìn)一步地,所述指令模擬操作包括:
分析當(dāng)前被調(diào)用函數(shù)觸發(fā)缺頁的指令,將其中尋址內(nèi)存地址ebp_new處的操作數(shù)改為尋址地址frame_i_shadow.[ebp],再模擬出修改后的臨時(shí)指令;?
將返回地址數(shù)值改為指向當(dāng)前被調(diào)用函數(shù)觸發(fā)缺頁的指令的下一條指令所在地址。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于四川大學(xué),未經(jīng)四川大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410102934.6/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 上一篇:防火碳纖維紗線制造方法
- 下一篇:一種棉、羊絨纖維工藝
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F21-00 防止未授權(quán)行為的保護(hù)計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)的安全裝置
G06F21-02 .通過保護(hù)計(jì)算機(jī)的特定內(nèi)部部件
G06F21-04 .通過保護(hù)特定的外圍設(shè)備,如鍵盤或顯示器
G06F21-06 .通過感知越權(quán)操作或外圍侵?jǐn)_
G06F21-20 .通過限制訪問計(jì)算機(jī)系統(tǒng)或計(jì)算機(jī)網(wǎng)絡(luò)中的節(jié)點(diǎn)
G06F21-22 .通過限制訪問或處理程序或過程
- ssc- miR-374b-5p 在制備減少脂肪沉積和/或抗肥胖相關(guān)性疾病的藥物中的應(yīng)用
- 一種室內(nèi)相對(duì)位置確定系統(tǒng)、控制方法以及控制裝置
- 一種基于函數(shù)調(diào)用的緩沖區(qū)溢出漏洞動(dòng)態(tài)檢測方法
- 宮頸癌標(biāo)志物EBP50及其應(yīng)用
- STAT3在豬卵巢顆粒細(xì)胞中的應(yīng)用
- 一種氨基修飾金納米載體檢測細(xì)胞C/EBPα的試劑盒、檢測方法及其應(yīng)用
- 轉(zhuǎn)錄因子C/EBPα作為ACOX1啟動(dòng)子區(qū)的轉(zhuǎn)錄因子的應(yīng)用
- C/EBPα組合物和使用方法
- 一種基于表面增強(qiáng)拉曼技術(shù)檢測血清中5-羥色胺的方法
- C/EBPβ在制備診斷或輔助診斷急性缺血性腦卒中產(chǎn)品中的應(yīng)用





