亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種通過硬件進(jìn)行反調(diào)試的方法和裝置的制作方法

文檔序號:6440748閱讀:322來源:國知局
專利名稱:一種通過硬件進(jìn)行反調(diào)試的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及軟件版權(quán)版權(quán)保護(hù)領(lǐng)域,更具體地涉及一種保護(hù)軟件的反調(diào)方法及裝置。
背景技術(shù)
軟件作為一種特殊的產(chǎn)品,由于其純數(shù)字化的特征,從問世起就一直遭受盜版的困擾。盜版的存在不僅給軟件開發(fā)者造成了巨大的損失,也極大阻礙了整個軟件行業(yè)的發(fā)展。因此,幾乎所有的軟件都采取了相應(yīng)的技術(shù)措施來避免軟件遭受破解和盜版,其中最為有效的就是基于硬件的軟件保護(hù)裝置技術(shù)?;谟布能浖Wo(hù)裝置是一種通過計(jì)算機(jī)接口(包括但不限于并口或者USB接口)連接到計(jì)算機(jī)主機(jī)上的硬件設(shè)備。該設(shè)備內(nèi)部具有非易失性存儲空間可供讀寫,通常還具有單片機(jī)或者微處理控制芯片等計(jì)算處理單元。軟件開發(fā)者可以通過接口函數(shù)和軟件保護(hù)裝置進(jìn)行數(shù)據(jù)交換(即對軟件保護(hù)裝置進(jìn)行讀寫),來檢查軟件保護(hù)裝置是否插在接口上;或者直接用軟件保護(hù)裝置附帶的工具進(jìn)行加密。這樣,軟件開發(fā)者可以在軟件中設(shè)置多處軟件鎖,利用軟件保護(hù)裝置做為鑰匙來打開這些鎖;如果沒插軟件保護(hù)裝置或軟件保護(hù)裝置不對應(yīng),軟件將不能正常執(zhí)行。此外,軟件保護(hù)裝置內(nèi)部包含特定的功能,例如一部分存儲空間、一些密碼算法或者一些用戶自定義的算法或者功能。在軟件發(fā)行之前,軟件開發(fā)者修改自己的軟件代碼,使得軟件在運(yùn)行過程中需要使用到軟件保護(hù)裝置內(nèi)部的一些功能,這樣軟件離開軟件保護(hù)裝置之后就會無法運(yùn)行,而軟件保護(hù)裝置作為一種硬件設(shè)備復(fù)制的難度較大,從而起到防止盜版軟件非法傳播的作用。當(dāng)前市場上主要的軟件保護(hù)裝置包括:美國SafeNet公司的Sentinel Superpro>以色列Aladdin公司的Hasp HL、中國北京深思洛克數(shù)據(jù)保護(hù)中心的精銳IV、德國W1-Bu公司的WIBU-Key等。所有這些軟件保護(hù)裝置都提供了內(nèi)置的存儲空間、私有或公開的密碼算法,當(dāng)軟件運(yùn)行過程中可以調(diào)用這些功能來檢驗(yàn)是否屬于正版。其中北京深思洛克數(shù)據(jù)保護(hù)中心的精銳IV于2002年上市,其特點(diǎn)是采用了智能卡芯片作為硬件的基礎(chǔ),而且支持用戶將自己定義的功能寫入到軟件保護(hù)裝置內(nèi)部,甚至可以直接將軟件的部分功能移植到軟件保護(hù)裝置內(nèi)部完成,從而大大提高了軟件被盜版的難度,通常稱這種將自己定義的功能或者軟件的部分功能移植到軟件保護(hù)裝置內(nèi)部的技術(shù)為代碼移植。北京深思洛克數(shù)據(jù)保護(hù)中心是本發(fā)明人的前身,現(xiàn)在對應(yīng)網(wǎng)站為http://www.sense, com, cn/,其中詳細(xì)公開了本發(fā)明人開發(fā)的精銳IV型軟件保護(hù)裝置的具體參數(shù)性能和工作原理。隨著計(jì)算機(jī)技術(shù)普及與應(yīng)用,計(jì)算機(jī)軟件產(chǎn)業(yè)迅速發(fā)展起來,針對軟件的各種攻擊和未授權(quán)使用以及盜版復(fù)制等行為越來越多,軟件安全成為保護(hù)知識產(chǎn)權(quán)的關(guān)鍵。目前的計(jì)算機(jī)軟件基本上是以二進(jìn)制代碼形式發(fā)布的,攻擊者通常利用靜態(tài)反匯編工具或動態(tài)調(diào)試工具等逆向分析技術(shù)對軟件可執(zhí)行版本進(jìn)行分析破解,通過尋找軟件漏洞或抽取其核心算法等方式,對軟件進(jìn)行竄改進(jìn)而竊取軟件知識產(chǎn)權(quán)。軟件逆向分析技術(shù)包括針對軟件的反匯編技術(shù)和反編譯技術(shù)兩個部分。反匯編技術(shù)是把可執(zhí)行的二進(jìn)制機(jī)器碼反匯編成為基本可讀的匯編語言程序代碼的方法,一般包含靜態(tài)反匯編技術(shù)和動態(tài)反匯編技術(shù)。靜態(tài)反匯編是把二進(jìn)制代碼一次性全部翻譯為匯編代碼,采用該技術(shù)時,處理二進(jìn)制文件的耗時與二進(jìn)制文件的大小成正比。動態(tài)反匯編是通過分析載入到反匯編器的二進(jìn)制程序,捕捉運(yùn)行特征指令,將其翻譯為可讀的匯編代碼。反編譯技術(shù)是把匯編程序進(jìn)一步反編譯為可讀性更強(qiáng)的高級語言代碼?,F(xiàn)有技術(shù)中通常采用軟件防竄改技術(shù)以及軟件反調(diào)試技術(shù)(狹義上來分,軟件防篡改技術(shù)是防止軟件被惡意篡改,如果軟件發(fā)現(xiàn)自己被惡意篡改,那么就執(zhí)行對應(yīng)的懲罰功能;軟件反調(diào)試是對調(diào)試軟件進(jìn)行檢測或者迷惑,使調(diào)試軟件分析錯誤或者不能正常運(yùn)行。廣義而言,這兩種技術(shù)都是針對調(diào)試行為的一種防范,也就是反調(diào)試)來抵抗各種非法使用。目前常用的軟件防竄改技術(shù)以及軟件反調(diào)試技術(shù)有:花指令、信息隱藏、文件校驗(yàn)、父進(jìn)程檢測、時間差等技術(shù)?;ㄖ噶罴夹g(shù)是指,通過生成特殊的匯編代碼或無用的字節(jié),使得調(diào)試程序在反匯編時候產(chǎn)生不正確匯編指令。常見的花指令技術(shù)是一些跳轉(zhuǎn)指令,目標(biāo)位置是另一條指令的中間,這樣在反匯編的時候便會出現(xiàn)混亂?;ㄖ噶羁衫酶鞣Njmp,call, ret,一些堆棧技巧,位置運(yùn)算,等等。信息隱藏技術(shù)是指在設(shè)計(jì)和確定模塊時,使得一個模塊內(nèi)包含的特定信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說,是透明的?!半[藏”的意思是,有效的模塊化通過定義一組相互獨(dú)立的模塊來實(shí)現(xiàn),這些獨(dú)立的模塊彼此之間僅僅交換那些為了完成系統(tǒng)功能所必需的信息,而將那些自身的實(shí)現(xiàn)細(xì)節(jié)與數(shù)據(jù)“隱藏”起來。信息隱蔽為軟件系統(tǒng)的修改、測試及以后的維護(hù)都帶來好處。通過信息隱藏,可以定義和實(shí)施對模塊的過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制。參見圖1,目前反調(diào)試技術(shù)的一種實(shí)現(xiàn)流程如下。受保護(hù)軟件運(yùn)行在計(jì)算機(jī)主機(jī)的系統(tǒng)當(dāng)中。為了偵測系統(tǒng)中是否存在調(diào)試行為,受保護(hù)軟件在開始啟動時會檢查是否存在有調(diào)試行為的進(jìn)程。判斷調(diào)試行為的方法具有很多種,各有優(yōu)缺點(diǎn)。作為示例,這里采用判斷父進(jìn)程名稱的方式來判斷是否被調(diào)試軟件調(diào)試。正常情況下,一個進(jìn)程(指的是在系統(tǒng)中運(yùn)行的可執(zhí)行程序)需要它的父進(jìn)程來啟動。比如使用Windows系統(tǒng)時,在桌面上雙擊應(yīng)用程序的圖標(biāo)(作為一個示例,這里的應(yīng)用程序是騰訊公司的QQ.exe),此時QQ.exe程序便會啟動起來,但是并沒有看到父進(jìn)程。其實(shí)雙擊QQ.exe時,只是通知Windows系統(tǒng)的Explorer, exe (可以狹義地理解為Windows桌面)要啟動QQ.exe,剩下啟動QQ.exe的工作都是由Explorer, exe完成的,實(shí)際上啟動QQ.exe的是Explorer, exe,這個啟動QQ.exe的Explorer, exe就是QQ.exe的父進(jìn)程。當(dāng)然,還可以通過其他形式啟動應(yīng)用程序,比如通過命令行。即,通過Windows的開始菜單執(zhí)行“運(yùn)行”,在打開輸入框里面輸入cmd命令,并點(diǎn)擊確定,這時就會啟動Windows的命令行程序cmd.exe ο在命令行里面輸入mspaint并點(diǎn)擊回車,這個時候Windows的畫圖板程序就會啟動。同理在輸入框中輸入clac并點(diǎn)擊回車,Windows的計(jì)算機(jī)器工具也會啟動,這個時候是通過cmd.exe啟動的畫圖板程序和計(jì)算器工具,此時它們的父進(jìn)程不是Explorer, exe而是cmd.exe。調(diào)試程序的時候,通常是用調(diào)試軟件來啟動被調(diào)試的程序,方法可能與正常啟動Windows程序不一樣,但是都是同樣的道理。通過調(diào)試軟件啟動被調(diào)試程序時,這個被調(diào)試的程序的父進(jìn)程就不是Explorer, exe也不是cmd.exe,而是調(diào)試軟件。判斷一個程序的父進(jìn)程是否是可信任的父進(jìn)程(比如Explorer, exe, cmd.exe等)就可以判斷一個程序是否被調(diào)試。如果判斷出系統(tǒng)中不存在調(diào)試行為(這里指父進(jìn)程是一個可信任的進(jìn)程),則繼續(xù)執(zhí)行受保護(hù)軟件中的其他功能模塊,繼續(xù)執(zhí)行受保護(hù)軟件的運(yùn)行;如果判斷出存在調(diào)試行為(指父進(jìn)程是一個不可信任的進(jìn)程),則受保護(hù)軟件不再執(zhí)行受保護(hù)軟件中的其他功能模塊,不再繼續(xù)執(zhí)行受保護(hù)軟件的運(yùn)行,退出該受保護(hù)軟件。但是這些技術(shù)只是增加了解密者解密的復(fù)雜度,即便是使用非常復(fù)雜的反調(diào)試代碼邏輯或者同時使用多個反調(diào)試代碼邏輯,由于反調(diào)試的相關(guān)處理邏輯及其代碼也是軟件本身的一個部分(比如上面提到判斷父進(jìn)程的邏輯),因此與軟件一樣完全暴露在所運(yùn)行的環(huán)境之中,直接面對解密者的調(diào)試與分析。一旦解密者正確分析出反調(diào)試的邏輯以后,解密者就會使反調(diào)試代碼邏輯失效,使軟件失去反調(diào)試代碼邏輯的保護(hù)。在軟件中添加反調(diào)試代碼邏輯只是給解密者增加了一定的難度,在保護(hù)軟件的同時也使反調(diào)試代碼邏輯本身面對解密者。這樣造成了軟件本身及其反調(diào)試代碼邏輯均容易被解密者破壞的問題。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明針對現(xiàn)有反調(diào)試技術(shù)直接面對解密者的這個缺點(diǎn),提出一種利用硬件反調(diào)試的實(shí)現(xiàn)技術(shù)方法。通過將反調(diào)試代碼邏輯移植在計(jì)算機(jī)主機(jī)系統(tǒng)外部的軟件保護(hù)裝置中,進(jìn)而防止了反調(diào)試代碼邏輯被隨意反調(diào)試和隨意修改,從而提高了解密者調(diào)試軟件的難度,便于軟件得到更好的保護(hù)。根據(jù)本發(fā)明的一個方面,提供一種通過軟件保護(hù)裝置防止對受保護(hù)軟件進(jìn)行調(diào)試的方法,所述軟件保護(hù)裝置是用于軟件保護(hù)的硬件設(shè)備,包括微控制器單元、存儲單元以及用于與計(jì)算機(jī)主機(jī)相連接的接口單元;所述方法包括步驟:步驟1:所述受保護(hù)軟件收集關(guān)于操作系統(tǒng)環(huán)境的系統(tǒng)信息;步驟2:所述受保護(hù)軟件將收集到的所述系統(tǒng)信息發(fā)送給所述軟件保護(hù)裝置;步驟3:所述軟件保護(hù)裝置接收到所述系統(tǒng)信息之后,利用所述系統(tǒng)信息判斷所述受保護(hù)軟件所運(yùn)行的操作系統(tǒng)環(huán)境中是否存在調(diào)試行為;步驟4:如果存在調(diào)試行為,則所述軟件保護(hù)裝置禁止所述受保護(hù)軟件正常運(yùn)行。根據(jù)本發(fā)明的一個方面,所述軟件保護(hù)裝置中具有:通信模塊,用于所述軟件保護(hù)裝置與計(jì)算機(jī)主機(jī)之間的通信;調(diào)試行為判斷模塊,用于判斷所述受保護(hù)軟件所運(yùn)行的操作系統(tǒng)環(huán)境中是否存在調(diào)試行為;硬件懲罰模塊,用于在判斷出存在所述調(diào)試行為時,禁止所述受保護(hù)軟件正常運(yùn)行。根據(jù)本發(fā)明的一個方面,在步驟I之前,啟動所述受保護(hù)軟件中的系統(tǒng)信息收集模塊;所述系統(tǒng)信息收集模塊收集所述關(guān)于操作系統(tǒng)環(huán)境的系統(tǒng)信息。根據(jù)本發(fā)明的一個方面,所述通信模塊采用的通信方式包括:串行接口通信、并行接口通信、1394接口通信、射頻識別接口通信、無線局域網(wǎng)接口通信、通用串行總線接口通信、藍(lán)牙接口通信、紅外接口通信、W1-Fi接口通信、IS07816串行通信;
所述調(diào)試行為判斷模塊采用的判斷方式包括:判斷父進(jìn)程、判斷操作系統(tǒng)AP1、判斷系統(tǒng)權(quán)限、判斷正在運(yùn)行程序的窗口名稱、查找所述受保護(hù)軟件運(yùn)行的環(huán)境中的所有進(jìn)程是否具有調(diào)試進(jìn)程;查找特定進(jìn)程的端口或者字段;還可以查找進(jìn)程的PEB的BeingDebuged字段以及進(jìn)程執(zhí)行塊EPR0CESS的DebugPort端口 ;調(diào)試行為判斷方式有很多,不限于上面提到這些。所述硬件懲罰模塊采用的硬件懲罰方式包括:所述軟件保護(hù)裝置的硬件鎖死一定時間、所述軟件保護(hù)裝置的硬件完全鎖死、所述軟件保護(hù)裝置的硬件返回隨機(jī)數(shù)據(jù)。


圖1:現(xiàn)有技術(shù)中未采用硬件形式的軟件保護(hù)設(shè)備來保護(hù)軟件反調(diào)試的示意圖。圖2:利用根據(jù)本發(fā)明一個具體實(shí)施方式
的硬件形式的軟件保護(hù)設(shè)備來保護(hù)軟件反調(diào)試的示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。根據(jù)本發(fā)明的一個具體實(shí)施方式
,本發(fā)明中的軟件保護(hù)裝置(即圖2中的安全硬件)為用于軟件版權(quán)保護(hù)的硬件設(shè)備,包括微控制器單元(Micro Control Unit,下稱MCU)、存儲器以及用于與計(jì)算機(jī)主機(jī)相連接的接口模塊。根據(jù)本發(fā)明的一個具體實(shí)施方式
,所述的存儲器與MCU相連接,用于保存的數(shù)據(jù)。所述存儲器包括但不限于非易失性存儲器、易失性存儲器。根據(jù)本發(fā)明的一個具體實(shí)施方式
,所述的接口模塊與MCU相連接,負(fù)責(zé)MCU與計(jì)算機(jī)主機(jī)之間的通信。所述的接口模塊包括但不限于串行接口、并行接口、1394接口、射頻識別(RFID)接口、無線局域網(wǎng)接口(IEEE802.11接口等)、通用串行總線(USB)接口、藍(lán)牙接口、紅外接口、無線保真(W1-Fi)接口、ISO 7816串行等。根據(jù)本發(fā)明的一個具體實(shí)施方式
,所述MCU、存儲器、接口模塊也可以集成到同一個芯片中,由單一的芯片提供所有的功能。根據(jù)本發(fā)明的一個具體實(shí)施方式
,軟件保護(hù)裝置中的硬件包括:通信模塊、調(diào)試行為判斷模塊、硬件懲罰模塊。作為一種實(shí)施例,這些模塊都是通過軟件代碼實(shí)現(xiàn)的,類似于Windows系統(tǒng)運(yùn)行在計(jì)算機(jī)硬件上一樣,所述多個模塊運(yùn)行在加密鎖的硬件芯片上。當(dāng)然,本領(lǐng)域的技術(shù)人員根據(jù)本發(fā)明所揭示和教導(dǎo)的內(nèi)容,完全能夠采用其它的方式(包括但不限于硬件、固件、軟件的形式)來實(shí)現(xiàn)這些模塊以完成類似的功能,或者對這些模塊進(jìn)行更進(jìn)一步的合并、拆分、組合以實(shí)現(xiàn)類似的功能??傊诖藘H描述本發(fā)明的核心思想和具體實(shí)施例,并不意味著本發(fā)明的實(shí)施以及要求保護(hù)的范圍僅受具體實(shí)施例的限制。其中,所述通信模塊,用于安全硬件與計(jì)算機(jī)主機(jī)之間的通信。通信方式包括但不限于串行接口通信、并行接口通信、1394接口通信、射頻識別(RFID)接口通信、無線局域網(wǎng)接口(IEEE802.11接口等)通信、通用串行總線(USB)接口通信、藍(lán)牙接口通信、紅外接口通信、無線保真(W1-Fi)接口通信、IS07816串行通信等。調(diào)試行為判斷模塊,用于判斷受保護(hù)軟件所運(yùn)行的環(huán)境中是否有存在調(diào)試行為。判斷方式包括但不限于判斷父進(jìn)程的方法、使用IsDebuggerPresent API (Windows系統(tǒng) API)、使用 CheckRemoteDebuggerPresent API (Windows 系統(tǒng) API)、判斷SeDebugPrivilege (系統(tǒng)的調(diào)試權(quán)限屬性)權(quán)限、判斷正在運(yùn)行程序的窗口名稱、查找受保護(hù)軟件運(yùn)行的環(huán)境中的所有進(jìn)程是否有調(diào)試進(jìn)程等;所述調(diào)試行為判斷模塊采用的判斷方式還可以:查找進(jìn)程的PEB的BeingDebuged字段以及進(jìn)程執(zhí)行塊EPR0CESS的DebugPort端口,調(diào)試行為判斷方式有很多,不限于上面提到這些。。硬件懲罰模塊,用于在發(fā)現(xiàn)受保護(hù)軟件運(yùn)行的環(huán)境存在調(diào)試行為時執(zhí)行硬件懲罰。硬件懲罰方式包括但不限于硬件鎖死一定時間、硬件徹底鎖死、硬件返回隨機(jī)數(shù)據(jù)等。本發(fā)明所提出的硬件反調(diào)試與現(xiàn)有反調(diào)試技術(shù)有本質(zhì)的區(qū)別。首先,反調(diào)試的邏輯從被保護(hù)軟件本身轉(zhuǎn)移到了安全硬件(即軟件保護(hù)裝置)內(nèi)部,采用更為復(fù)雜的硬件形式來保護(hù)軟件,以防止其被反調(diào)試。其次,受保護(hù)軟件正常運(yùn)行需要依賴于安全硬件,因此受保護(hù)軟件和安全硬件成為一個整體運(yùn)行的計(jì)算系統(tǒng)。根據(jù)本發(fā)明的一個具體實(shí)施方式
,參考圖2,軟件保護(hù)過程和實(shí)施的方案如下:首先,受保護(hù)軟件運(yùn)行在計(jì)算機(jī)主機(jī)的系統(tǒng)當(dāng)中。根據(jù)本發(fā)明的一個具體實(shí)施方式
,為了偵測系統(tǒng)中是否存在調(diào)試行為,受保護(hù)軟件啟動一個檢查調(diào)試行為的線程,即圖2中的“偵測線程”。根據(jù)本發(fā)明的另一個具體實(shí)施方式
,為了偵測系統(tǒng)中是否存在調(diào)試行為,也可以在受保護(hù)軟件內(nèi)部啟動一個進(jìn)程。啟動進(jìn)程或者線程的目的是啟動與受保護(hù)軟件并行的一段代碼,用來進(jìn)行調(diào)試行為的偵測。然后,該線程啟動圖2中的“系統(tǒng)信息收集模塊”。該系統(tǒng)信息收集模塊使用上面提到的方法來所進(jìn)行系統(tǒng)信息的實(shí)時收集,比如上面提到的使用IsDebuggerPresentAPI (Windows 系統(tǒng) API)、使用 CheckRemoteDebuggerPresent API (Windows 系統(tǒng) API)、判斷SeDebugPrivilege (系統(tǒng)的調(diào)試權(quán)限屬性)權(quán)限、判斷正在運(yùn)行程序的窗口名稱、查找受保護(hù)軟件運(yùn)行的環(huán)境中的所有進(jìn)程是否有調(diào)試進(jìn)程等。根據(jù)本發(fā)明的一個具體實(shí)施方式
,收集的信息包括但不限于上述的父進(jìn)程名稱、系統(tǒng)API IsDebuggerPresent的返回結(jié)果、系統(tǒng)SeDebugPrivilege (系統(tǒng)的調(diào)試權(quán)限屬性)權(quán)限值,并將這些信息發(fā)送給安全硬件。安全硬件的通信模塊接收到這些實(shí)時信息,再將這些信息發(fā)送給調(diào)試行為判斷模塊。調(diào)試行為判斷模塊對通信模塊發(fā)送的的實(shí)時信息進(jìn)行處理,根據(jù)預(yù)先設(shè)定的判斷邏輯來判斷受保護(hù)軟件所運(yùn)行的環(huán)境中是否存在調(diào)試軟件。作為一種示例,可以對父進(jìn)程的名稱進(jìn)行判斷。比如,判斷父進(jìn)程的名稱是不是Explorer, exe或者cmd.exe。此外,還可以判斷API的返回值。比如,判斷系統(tǒng)API IsDebuggerPresent的返回是TRUE還是FALSE等。當(dāng)然,本領(lǐng)域的技術(shù)人員完全清楚,判斷邏輯可以采用很多種方式,包括但不限于對父進(jìn)程名稱的判斷以及對API返回值的判斷。如果存在調(diào)試軟件,比如父進(jìn)程的名稱不是可信任的,即不是Explorer, exe或者cmd.exe,或者系統(tǒng)API IsDebuggerPresent的返回值為TRUE,那么調(diào)試行為判斷模塊就將判斷結(jié)果發(fā)送給安全硬件的硬件懲罰模塊。安全硬件的硬件懲罰模塊啟動相應(yīng)懲罰,比如安全硬件功能全不可用或者通過通信模塊向受保護(hù)軟件返回隨機(jī)錯誤數(shù)據(jù)等。這時受保護(hù)軟件就不能正常運(yùn)行,達(dá)到了軟件保護(hù)的目的。如果不存在調(diào)試軟件,則安全硬件的功能正常執(zhí)行,從而使軟件功能正常執(zhí)行。使用這種反調(diào)試技術(shù)后,破解者無法跟蹤到安全硬件內(nèi)部,也就無法獲得硬件內(nèi)部反調(diào)試的代碼邏輯,從而保護(hù)了反調(diào)試代碼邏輯的安全性。即便是破解者獲得到了安全硬件內(nèi)部的反調(diào)試代碼邏輯,也無法更改硬件的反調(diào)試代碼邏輯,從而達(dá)到了反調(diào)試代碼邏輯的不可修改,這樣就避免了在軟件內(nèi)部的反調(diào)試代碼邏輯被跟蹤和修改的缺點(diǎn),增強(qiáng)了軟件的安全程度。下面結(jié)合實(shí)施例,對本發(fā)明的技術(shù)內(nèi)容進(jìn)一步闡述。實(shí)施例1利用軟件保護(hù)裝置對計(jì)算機(jī)主機(jī)中運(yùn)行的桌面提醒軟件進(jìn)行加密保護(hù)。其中桌面提醒軟件是受保護(hù)軟件,同時利用軟件保護(hù)裝置對其進(jìn)行保護(hù)。對于本領(lǐng)域的技術(shù)人員而言,本實(shí)施例僅僅是為了說明本發(fā)明的應(yīng)用簡化實(shí)施例。本領(lǐng)域的技術(shù)人員很明顯知道,實(shí)際的加密過程可能比這個例子復(fù)雜得多,但是其并未脫離本發(fā)明的具體思想。根據(jù)本發(fā)明的一個具體實(shí)施方式
,只將桌面提醒軟件的提醒時間存儲在安全硬件的內(nèi)部,只有一個每日15:00進(jìn)行例會提醒,本實(shí)施例中使用的反調(diào)試代碼邏輯是判斷父進(jìn)程。通常情況下一個Windows程序的父進(jìn)程名稱是Explorer, exe或者cmd.exe,如果該程序被調(diào)試軟件啟動,那么該程序的父進(jìn)程名稱就是該調(diào)試軟件,比如調(diào)試軟件可采用OllyICE.exe (該軟件是破解者使用的很常規(guī)的調(diào)試軟件)。具體實(shí)現(xiàn)的步驟如下:一、根據(jù)受保護(hù)軟件信息或者受保護(hù)軟件的代碼邏輯的重要程度確定受保護(hù)軟件(即桌面提醒軟件)需要保護(hù)的功能或者數(shù)據(jù),比如每日提醒時間,每月提醒時間等。在本實(shí)施例中將把每日15:00的會議提醒這個信息存放到安全硬件內(nèi)部,其存儲格式為“DAY15:00 Meeting”。也就是說,在當(dāng)受保護(hù)軟件需要進(jìn)行提醒判斷時,其提醒時間必須從安全硬件中獲得。二、受保護(hù)軟件啟動并啟動上文提到的調(diào)試行為的偵測線程(或者進(jìn)程,參見上文描述)。偵測線程的系統(tǒng)信息收集模塊獲得受保護(hù)軟件的父進(jìn)程名稱,并將父進(jìn)程名稱通過受保護(hù)軟件的通信模塊發(fā)送給安全硬件。很明顯,本領(lǐng)域的技術(shù)人員通過調(diào)用相應(yīng)的系統(tǒng)API即可獲得父進(jìn)程名稱,在此不再詳述。三、安全硬件的通信模塊接收到上述數(shù)據(jù)后,發(fā)送給調(diào)試行為判斷模塊。調(diào)試行為判斷模塊根據(jù)預(yù)先設(shè)定好的調(diào)試軟件判斷代碼邏輯開始判斷。如果所述受保護(hù)軟件所在系統(tǒng)環(huán)境中有調(diào)試軟件存在,并且是通過該調(diào)試軟件啟動的受保護(hù)軟件,那么通信模塊發(fā)送來的數(shù)據(jù)數(shù)是調(diào)試軟件的名稱,比如“OllyICE.exe"而不是“Explorer, exe”或者“cmd.exe”,這就說明該受保護(hù)軟件正在被調(diào)試,那么調(diào)試行為判斷模塊將判斷結(jié)果發(fā)送給硬件懲罰模塊。硬件懲罰模塊根據(jù)預(yù)先設(shè)定的懲罰邏輯進(jìn)行懲罰,懲罰方式可以是發(fā)送錯誤數(shù)據(jù),比如將受保護(hù)軟件預(yù)先保存的“DAY 15:00 Meeting”數(shù)據(jù)返回成“DAY 24:00Meeting”,這樣軟件雖然能正常執(zhí)行,但是功能是錯誤的。如果受保護(hù)軟件所在系統(tǒng)環(huán)境沒有調(diào)試器,那么安全硬件的通信模塊接收的數(shù)據(jù)就是”Explorer, exe”或者”cmd.exe”,這樣調(diào)試行為判斷模塊就會判斷出沒有調(diào)試行為,將該結(jié)果發(fā)送給硬件懲罰模塊,硬件懲罰模塊便不會啟動硬件懲罰。
四、受保護(hù)軟件在不存在調(diào)試軟件或者不處于調(diào)試狀態(tài)的情況下正常地向安全硬件提出功能請求,功能請求根據(jù)受保護(hù)軟件的功能不同而不同。例如上面提到的將提醒信息“DAY 15:00 Meeting”存儲到安全硬件內(nèi)部。受保護(hù)軟件想要獲得存儲的“DAY 15:00Meeting”數(shù)據(jù)時,就會向安全硬件發(fā)送功能請求,安全硬件就會將“DAY 15:00 Meeting”數(shù)據(jù)發(fā)送給受保護(hù)軟件,作為提醒時間的判斷依據(jù)。在整個軟件運(yùn)行過程當(dāng)中,可以定時地向安全硬件發(fā)送系統(tǒng)實(shí)時數(shù)據(jù),具體數(shù)據(jù)依賴于安全硬件內(nèi)部的調(diào)試行為判斷模塊,信息包括但不限于父進(jìn)程名稱、系統(tǒng)APIIsDebuggerPresent的返回結(jié)果、SeDebugPrivilege (系統(tǒng)的調(diào)試權(quán)限屬性)權(quán)限值,用于判斷當(dāng)前運(yùn)行過程中是否存在調(diào)試行為,進(jìn)一步的防止軟件在運(yùn)行過程中被調(diào)試。上述步驟二中在安全硬件內(nèi)部只是通過判斷父進(jìn)程來判斷是否存在調(diào)試行為。根據(jù)本發(fā)明的一個具體實(shí)施方式
,實(shí)際上可以將現(xiàn)有的大多數(shù)調(diào)試行為判斷方法放到安全硬件內(nèi)部,增加調(diào)試軟件判斷的正確性,比如判斷父進(jìn)程、系統(tǒng)API IsDebuggerPresent的返回結(jié)果、SeDebugPrivilege (系統(tǒng)的調(diào)試權(quán)限屬性)權(quán)限值、查找受保護(hù)軟件運(yùn)行環(huán)境中危險進(jìn)程等。另外,根據(jù)本發(fā)明的一個具體實(shí)施方式
,當(dāng)判斷出有調(diào)試行為存在的時候,安全硬件先不進(jìn)行硬件懲罰,而是等待軟件和安全硬件多次通信后再執(zhí)行硬件懲罰。比如進(jìn)行延時懲罰,即,發(fā)現(xiàn)調(diào)試行為以后不立即執(zhí)行硬件懲罰,而是等過5分鐘或者其他時間進(jìn)行懲罰。這樣使解密者難以判斷硬件懲罰的依據(jù)。實(shí)施例2利用本發(fā)明中的軟件保護(hù)裝置保護(hù)一種繪圖軟件,該繪圖軟件中有許多重要的曲線計(jì)算公式。一、繪圖軟件是受保護(hù)軟件,按照代碼邏輯的重要程度確定受保護(hù)軟件需要保護(hù)的功能或者數(shù)據(jù)。根據(jù)本發(fā)明的一種實(shí)施方式,將重要的曲線計(jì)算公式都移植到安全硬件內(nèi)部。同時修改該繪圖軟件,使其能同安全硬件協(xié)作完成安全硬件內(nèi)部的曲線公式的計(jì)算。二、繪圖軟件啟動,同時啟動調(diào)試行為偵測線程,偵測線程的系統(tǒng)信息收集模塊將收集系統(tǒng)實(shí)時信息。根據(jù)本發(fā)明的一種實(shí)施方式,收集的是系統(tǒng)API IsDebuggerPresent的返回結(jié)果。并將系統(tǒng)API IsDebuggerPresent的返回結(jié)果通過通信模塊發(fā)送給安全硬件。三、安全硬件的通信模塊接收到繪圖軟件發(fā)送的系統(tǒng)實(shí)時信息以后,將該信息發(fā)送給安全硬件的調(diào)試行為判斷模塊,調(diào)試行為判斷模塊進(jìn)行主機(jī)上的調(diào)試行為判斷,即判斷通信模塊發(fā)送的實(shí)時信息是TRUE還是FALSE。如果發(fā)送的是TRUE,則表明主機(jī)上有調(diào)試軟件正在調(diào)試受保護(hù)的繪圖軟件;如果為FALSE,表明主機(jī)上沒有調(diào)試軟件在調(diào)試受保護(hù)的繪圖軟件,然后將判斷結(jié)果發(fā)送給硬件懲罰模塊。四、硬件懲罰模塊根據(jù)調(diào)試行為判斷模塊發(fā)送的判斷結(jié)果決定是否進(jìn)行硬件懲罰。根據(jù)本發(fā)明的一種實(shí)施方式,本實(shí)施例中采取的硬件懲罰措施是讓移植在安全硬件內(nèi)部的公式計(jì)算錯誤。比如,受保護(hù)的軟件中需要計(jì)算加法的公式A:c = a+b,受保護(hù)的繪圖軟件將a和b通過通信模塊發(fā)送給安全硬件,安全硬件根據(jù)公式A進(jìn)行計(jì)算。如果沒有硬件懲罰,則安全硬件會正常返回c = a+b,如果使用了硬件懲罰,安全硬件則會隨機(jī)返回某個算法的結(jié)果,比如c = a*b, c = a-b, c = a/b等,并將c返回給受保護(hù)的繪圖軟件。很明顯,上述具體實(shí)施例采用了文字說明的形式進(jìn)行詳細(xì)描述。本領(lǐng)域的技術(shù)人員根據(jù)現(xiàn)有的技術(shù),完全能夠采用多種編程語言以及類似的程序編寫邏輯來實(shí)現(xiàn)其類似的功能。另外,上述各個具體實(shí)施方式
僅僅是用于舉例說明本發(fā)明的發(fā)明構(gòu)思,本發(fā)明的實(shí)現(xiàn)不局限于上述各種具體實(shí)施方式
。對于本領(lǐng)域的技術(shù)人員而言,完全可以將上述各個步驟進(jìn)行更進(jìn)一步的拆分、合并、變換、刪除,從而實(shí)現(xiàn)本發(fā)明的核心構(gòu)思。上述多種情況的變形是本領(lǐng)域的技術(shù)人員很容易想到的,因此上述舉例僅僅是示意性說明,而無法涵蓋軟件保護(hù)領(lǐng)域的各種情況。本發(fā)明的核心構(gòu)思是軟件保護(hù)裝置通過調(diào)用安全硬件中的調(diào)試行為判斷模塊來判斷是否存在調(diào)試行為,并根據(jù)判斷結(jié)果對受保護(hù)軟件的執(zhí)行進(jìn)行控制和管理。因此,在此基礎(chǔ)之上,其它各種調(diào)用順序、處理順序的變形均是很容易想到的,無需在本發(fā)明的說明書中進(jìn)行窮盡式的描寫。此外,對于判斷出存在調(diào)試行為的情況下,安全硬件也可進(jìn)行諸如發(fā)出報警或者停止工作等操作,從而提醒當(dāng)前受保護(hù)軟件受到調(diào)試。也就是說,一旦偵測出調(diào)試行為,安全硬件提醒方式可以有多種,這屬于本領(lǐng)域的技術(shù)人員很容易想到的,無需在本發(fā)明的說明書中進(jìn)行窮盡式的描寫。以上所述包括有本發(fā)明的例子。當(dāng)然,為了描述本發(fā)明的目的,描述每個可以想見的組件或方法的組合是不現(xiàn)實(shí)的,但是,本領(lǐng)域的技術(shù)人員會認(rèn)識到,許多進(jìn)一步的組合和輪換對本發(fā)明來說是可能的。因此,本發(fā)明旨在包含所有這樣的落在所附權(quán)利要求書的精神和范圍之內(nèi)的變更、改進(jìn)和變化。此外,以本說明書和權(quán)利要求書為限,術(shù)語“具有”類似于術(shù)語“包括”。
權(quán)利要求
1.一種通過軟件保護(hù)裝置防止對受保護(hù)軟件進(jìn)行調(diào)試的方法,所述軟件保護(hù)裝置是用于軟件保護(hù)的硬件設(shè)備,包括微控制器單元、存儲單元以及用于與計(jì)算機(jī)主機(jī)相連接的接口單元; 其特征在于,所述方法包括步驟: 步驟1:所述受保護(hù)軟件收集關(guān)于操作系統(tǒng)環(huán)境的系統(tǒng)信息; 步驟2:所述受保護(hù)軟件將收集到的所述系統(tǒng)信息發(fā)送給所述軟件保護(hù)裝置; 步驟3:所述軟件保護(hù)裝置接收到所述系統(tǒng)信息之后,利用所述系統(tǒng)信息判斷所述受保護(hù)軟件所運(yùn)行的操作系統(tǒng)環(huán)境中是否存在調(diào)試行為; 步驟4:如果存在調(diào)試行為,則所述軟件保護(hù)裝置禁止所述受保護(hù)軟件正常運(yùn)行。
2.根據(jù)權(quán)利要求1的通過軟件保護(hù)裝置防止對受保護(hù)軟件進(jìn)行調(diào)試的方法,其特征在于, 所述軟件保護(hù)裝置中具有: 通信模塊,用于所述軟件保護(hù)裝置與計(jì)算機(jī)主機(jī)之間的通信; 調(diào)試行為判斷模塊,用于判斷所述受保護(hù)軟件所運(yùn)行的操作系統(tǒng)環(huán)境中是否存在調(diào)試行為; 硬件懲罰模塊,用于在判斷出存在所述調(diào)試行為時,禁止所述受保護(hù)軟件正常運(yùn)行。
3.根據(jù)權(quán)利要求1、2的通過軟件保護(hù)裝置防止對受保護(hù)軟件進(jìn)行調(diào)試的方法,其特征在于, 在步驟I之前,啟動所述受保護(hù)軟件中的系統(tǒng)信息收集模塊; 所述系統(tǒng)信息收集模塊收集所述關(guān)于操作系統(tǒng)環(huán)境的系統(tǒng)信息。
4.根據(jù)權(quán)利要求1-3的通過軟件保護(hù)裝置防止對受保護(hù)軟件進(jìn)行調(diào)試的方法,其特征在于, 所述通信模塊采用的通信方式包括:串行接口通信、并行接口通信、1394接口通信、射頻識別接口通信、無線局域網(wǎng)接口通信、通用串行總線接口通信、藍(lán)牙接口通信、紅外接口通信、W1-Fi接口通信、IS07816串行通信; 所述調(diào)試行為判斷模塊采用的判斷方式至少包括:判斷父進(jìn)程、判斷操作系統(tǒng)AP1、判斷系統(tǒng)權(quán)限、判斷正在運(yùn)行程序的窗口名稱、查找所述受保護(hù)軟件運(yùn)行的環(huán)境中的所有進(jìn)程是否具有調(diào)試進(jìn)程、查找特定進(jìn)程的端口或者字段; 所述硬件懲罰模塊采用的硬件懲罰方式包括:所述軟件保護(hù)裝置的硬件鎖死一定時間、所述軟件保護(hù)裝置的硬件完全鎖死、所述軟件保護(hù)裝置的硬件返回隨機(jī)數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種通過硬件反調(diào)試對軟件進(jìn)行保護(hù)的技術(shù)方法和實(shí)現(xiàn)裝置,屬于軟件版權(quán)保護(hù)領(lǐng)域。包括反調(diào)試過程中需要依賴于外部的硬件處理單元,硬件處理單元中所包含的功能是用來判斷受保護(hù)軟件所在環(huán)境是否存在調(diào)試軟件,這樣可以防止調(diào)試軟件判斷邏輯被跟蹤且被而已修改。
文檔編號G06F21/14GK103164643SQ20111040972
公開日2013年6月19日 申請日期2011年12月8日 優(yōu)先權(quán)日2011年12月8日
發(fā)明者孫吉平, 韓勇 申請人:北京深思洛克軟件技術(shù)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1