[發(fā)明專利]一種棧探測器編譯開關(guān)的檢測方法和裝置在審
| 申請?zhí)枺?/td> | 201310057221.8 | 申請日: | 2013-02-22 |
| 公開(公告)號: | CN104008314A | 公開(公告)日: | 2014-08-27 |
| 發(fā)明(設(shè)計)人: | 周力 | 申請(專利權(quán))人: | 騰訊科技(深圳)有限公司 |
| 主分類號: | G06F21/12 | 分類號: | G06F21/12;G06F21/52;G06F11/36 |
| 代理公司: | 深圳市深佳知識產(chǎn)權(quán)代理事務(wù)所(普通合伙) 44285 | 代理人: | 唐華明 |
| 地址: | 518031 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 探測器 編譯 開關(guān) 檢測 方法 裝置 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種棧探測器編譯開關(guān)的檢測方法和裝置。
背景技術(shù)
在軟件漏洞挖掘等各種安全應(yīng)用中,安全研究人員需要知道軟件當(dāng)前開啟了哪些保護措施,常用的保護措施包括:DEP(Data?Execution?Prevention,數(shù)據(jù)執(zhí)行保護)、ALSR(Address?space?layout?randomization,內(nèi)存隨機化保護)、SafeSEH(Safe?Structured?Exception?Handling,安全異常處理保護)以及GS(Controls?stack?probes,棧探測器)等。
開啟GS編譯開關(guān)可以防止棧溢出攻擊。若GS編譯開關(guān)處于開啟狀態(tài),那么在函數(shù)調(diào)用發(fā)生時會向棧幀中壓入4個字節(jié)的隨機數(shù),該隨機數(shù)被稱為安全信息(security?cookie),位于棧底EBP(extended?base?pointer,擴展基址指針寄存器)之前,并且.data(數(shù)據(jù)段)的內(nèi)存區(qū)域中還會存放一個security?cookie的副本。若GS編譯開關(guān)沒有打開,則不會壓入security?cookie。打開GS編譯開關(guān)的主要目的是防止棧溢出攻擊,即:當(dāng)溢出的數(shù)據(jù)破壞了securitycookie后,軟件程序會取用存放的副本對security?cookie進行校驗,如果校驗失敗則退出程序。這樣就可以防止棧溢出攻擊。
目前有關(guān)于GS編譯開關(guān)的原理以及作用的介紹,但是還沒有可靠的檢測方法來確定軟件程序是否開啟了GS編譯開關(guān)對軟件程序進行保護。
發(fā)明內(nèi)容
本發(fā)明實施例提供了一種棧探測器編譯開關(guān)的檢測方法和裝置,用于檢測GS編譯開關(guān)是否開啟。
一種棧探測器編譯開關(guān)的檢測方法,包括:
對軟件進行殼檢測與脫殼處理后,查找所述軟件的主函數(shù)入口確定主函數(shù);
對所述主函數(shù)進行特征掃描,若存在與棧探測器GS編譯開關(guān)對應(yīng)的特征指令,則確定GS編譯開關(guān)被開啟了。
一種棧探測器編譯開關(guān)的檢測裝置,包括:
確定單元,用于對軟件進行殼檢測與脫殼處理后,查找所述軟件的主函數(shù)入口確定主函數(shù);
掃描單元,用于對所述確定單元確定的主函數(shù)進行特征掃描;
判決單元,用于若所述掃描單元經(jīng)掃描確定存在與棧探測器GS編譯開關(guān)對應(yīng)的特征指令,則確定GS編譯開關(guān)被開啟了。
從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點:通過對軟件進行殼檢測與脫殼處理,查到找主函數(shù)入口來確定主函數(shù),然后對主函數(shù)進行特征掃描來可以確定GS編譯開關(guān)是否被開啟了。這樣可以為軟件漏洞挖掘等安全應(yīng)用提供方便。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例方法流程示意圖;
圖2為本發(fā)明實施例方法流程示意圖;
圖3為本發(fā)明實施例裝置結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施例裝置結(jié)構(gòu)示意圖;
圖5為本發(fā)明實施例裝置結(jié)構(gòu)示意圖;
圖6為本發(fā)明實施例裝置結(jié)構(gòu)示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明作進一步地詳細描述,顯然,所描述的實施例僅僅是本發(fā)明一部份實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例提供了一種一種棧探測器編譯開關(guān)的檢測方法,如圖1所示,包括:
101:對軟件進行殼檢測與脫殼處理后,查找上述軟件的主函數(shù)入口確定主函數(shù);
上述101中,殼檢測是為了確定軟件的殼,脫殼處理則是為了能夠在后續(xù)找到軟件的真實入口,即Main(主)函數(shù)的入口。由于一些程序,例如使用vs2005編譯的程序,即使關(guān)閉GS編譯開關(guān),某些初始化函數(shù)運行時還是會使用security?cookie,這樣我們就不能準(zhǔn)確地確認到底這個程序是否開啟了GS編譯開關(guān)。也就是說需要找到用戶編寫的代碼部分有沒有開啟GS編譯開關(guān),采用以上方案可以檢測到代碼部分,因此這樣就可以避免這個問題。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于騰訊科技(深圳)有限公司,未經(jīng)騰訊科技(深圳)有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310057221.8/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





