国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種軟件的保護(hù)方法

      文檔序號(hào):6423329閱讀:188來(lái)源:國(guó)知局
      專利名稱:一種軟件的保護(hù)方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及軟件版權(quán)保護(hù)技術(shù),特別涉及一種軟件的保護(hù)方法。
      背景技術(shù)
      軟件由于其純數(shù)字化的特征,一直遭受盜版的困擾,而使用加密鎖是實(shí)現(xiàn)商業(yè)軟 件版權(quán)保護(hù)的一種主要手段。其中,加密鎖是一個(gè)連接在計(jì)算機(jī)的并口或者通用串行總線 (USB)等外部接口上的硬件設(shè)備。加密鎖作為一種硬件設(shè)備,復(fù)制的難度較大,從而起到防 止受保護(hù)軟件被非法使用的作用。圖1為現(xiàn)有技術(shù)的軟件的保護(hù)方法的示意圖。如圖1所示,現(xiàn)有技術(shù)的基于加 密鎖的軟件保護(hù)方法是受保護(hù)軟件在運(yùn)行過(guò)程中通過(guò)加密鎖API接口(Application Programming hterface,應(yīng)用程序編程接口)調(diào)用連接在該受保護(hù)軟件所在計(jì)算機(jī)上的加 密鎖,若返回結(jié)果正確,則受保護(hù)軟件繼續(xù)運(yùn)行,若返回結(jié)果錯(cuò)誤,則受保護(hù)軟件終止運(yùn)行。 根據(jù)圖1可以看出,現(xiàn)有技術(shù)的基于加密鎖的軟件保護(hù)方案中存在兩個(gè)明顯的數(shù)據(jù)交換的 邊界受保護(hù)軟件和加密鎖API接口之間以及加密鎖API接口和加密鎖之間。由于現(xiàn)代操作系統(tǒng)的開(kāi)放性,破解者可以對(duì)軟件層運(yùn)行過(guò)程中的任何一個(gè)環(huán)節(jié)進(jìn) 行跟蹤和分析,這樣一來(lái),特征明顯的邊界就成為破解者最容易實(shí)施攻擊的位置。對(duì)于加密鎖API接口和加密鎖之間的交互,可以通過(guò)有加密鎖硬件參與的通信加 密等手段實(shí)現(xiàn)有效的保護(hù),由于加密鎖硬件的安全性很高,因此攻擊的難度很高。而受保護(hù) 軟件和加密鎖API接口則全部是軟件代碼構(gòu)成,不能擺脫破解者的監(jiān)控,破解者可以通過(guò) 跟蹤受保護(hù)軟件調(diào)用加密鎖的相關(guān)代碼,包括受保護(hù)軟件調(diào)用加密鎖API接口的代碼、調(diào) 用時(shí)的輸入數(shù)據(jù)、加密鎖返回的結(jié)果、以及對(duì)加密鎖返回結(jié)果的處理代碼,最終通過(guò)篡改或 者欺騙受保護(hù)軟件來(lái)實(shí)現(xiàn)脫離加密鎖運(yùn)行。因此,現(xiàn)有技術(shù)的基于加密鎖的軟件保護(hù)方案只能保證加密鎖硬件部分的安全, 軟件部分的安全仍然存在比較嚴(yán)重的問(wèn)題。

      發(fā)明內(nèi)容
      本發(fā)明的目的是提供一種軟件的保護(hù)方法,以解決現(xiàn)有技術(shù)的基于加密鎖的軟件 保護(hù)方案中軟件部分容易被破解者跟蹤和分析破解的問(wèn)題。為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種軟件的保護(hù)方法,包括受保護(hù)軟件在運(yùn)行 過(guò)程中通過(guò)加密鎖API接口調(diào)用連接在該受保護(hù)軟件所在計(jì)算機(jī)上的加密鎖,若返回結(jié)果 正確,則受保護(hù)軟件繼續(xù)運(yùn)行,若返回結(jié)果錯(cuò)誤,則受保護(hù)軟件終止運(yùn)行,所述受保護(hù)軟件 中用于調(diào)用加密鎖的代碼是在軟件被交付用戶之前對(duì)該軟件中用于調(diào)用加密鎖的原始代 碼進(jìn)行變換生成的新代碼。作為優(yōu)選,所述受保護(hù)軟件中用于調(diào)用加密鎖的代碼包括為調(diào)用所述加密鎖準(zhǔn) 備輸入數(shù)據(jù)的代碼和對(duì)所述加密鎖的返回結(jié)果進(jìn)行處理的代碼。作為優(yōu)選,所述加密鎖API接口的代碼是在加密鎖API接口被交付用戶之前對(duì)加密鎖API接口的原始代碼進(jìn)行變換生成的新代碼。 作為進(jìn)一步地優(yōu)選,所述加密鎖API接口的代碼包括加密鎖API接口的入口的代碼。作為進(jìn)一步地優(yōu)選,對(duì)所述原始代碼進(jìn)行變換的方法是將所述原始代碼進(jìn)行指 令變形或?qū)⑺鲈即a變換為虛擬機(jī)代碼。作為進(jìn)一步地優(yōu)選,對(duì)所述受保護(hù)軟件中用于調(diào)用加密鎖的原始代碼進(jìn)行變換的 規(guī)則是動(dòng)態(tài)的,每次所述變換生成的新代碼均不相同。作為進(jìn)一步地優(yōu)選,對(duì)所述加密鎖API接口的原始代碼進(jìn)行變換的規(guī)則是動(dòng)態(tài) 的,每次所述變換生成的新代碼均不相同。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果本發(fā)明提供的軟件的保護(hù)方法中,受保護(hù)軟件中用于調(diào)用加密鎖的代碼和加密鎖 API接口的代碼已被轉(zhuǎn)換成破解者難以分析的代碼,使破解者無(wú)法跟蹤受保護(hù)軟件調(diào)用加 密鎖時(shí)的輸入數(shù)據(jù)和輸出數(shù)據(jù),因而使受保護(hù)軟件和加密鎖API接口之間的數(shù)據(jù)交互得到 了保護(hù),提高了破解者分析的難度,從而提高了基于加密鎖的軟件保護(hù)方案的安全強(qiáng)度;此 外,由于對(duì)所述受保護(hù)軟件中用于調(diào)用加密鎖的原始代碼和加密鎖API接口的原始代碼進(jìn) 行變換的規(guī)則都是動(dòng)態(tài)的,所以每次變換生成的新代碼均不一樣,進(jìn)一步提高了軟件保護(hù) 的安全性。


      圖1為現(xiàn)有技術(shù)的軟件的保護(hù)方法的示意圖。圖2為本發(fā)明的軟件的保護(hù)方法的實(shí)施例一的示意圖。圖3為本發(fā)明的軟件的保護(hù)方法的實(shí)施例二的示意圖。
      具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行詳細(xì)說(shuō)明。實(shí)施例一本實(shí)施例提供的軟件的保護(hù)方法包括如下步驟利用計(jì)算機(jī)中的軟件開(kāi)發(fā)工具計(jì)算明文T的變換結(jié)果C ;在受保護(hù)軟件中存儲(chǔ)明文T和變換結(jié)果C ;受保護(hù)軟件通過(guò)加密鎖API接口調(diào)用加密鎖,輸入明文T,返回變換結(jié)果Cl ;受保護(hù)軟件對(duì)比C和Cl,若相等,則受保護(hù)軟件繼續(xù)運(yùn)行,否則受保護(hù)軟件終止運(yùn) 行。軟件開(kāi)發(fā)商在將受保護(hù)軟件交付用戶之前,經(jīng)過(guò)編譯,受保護(hù)軟件中用于調(diào)用加 密鎖的原始代碼可能是 PUSH offset_Cl_buffPUSH offset_T_buffCALL ? LIV_encrypt ?這三行原始代碼用于通過(guò)加密鎖API接口的LIV_Encrypt函數(shù)調(diào)用加密鎖計(jì)算 Cl ;
      PUSH offset_Cl_buffPUSH Offset_C_buffCALL ? MEMCMP ?JNZ ? EXIT ?這四行原始代碼用于比較C和Cl。根據(jù)上述代碼,破解者能夠很容易地找到CALL LIV_enCrypt ?指令并設(shè)置斷 點(diǎn),并跟蹤參數(shù)傳遞過(guò)程獲得LIV_enCrypt函數(shù)的輸入數(shù)據(jù)和輸出數(shù)據(jù),最終通過(guò)模擬 LIV_encrypt函數(shù)來(lái)直接返回明文T對(duì)應(yīng)的輸出C,欺騙受保護(hù)軟件。圖2為本發(fā)明的軟件的保護(hù)方法的實(shí)施例一的示意圖。如圖2所示,在本實(shí)施例 提供的軟件的保護(hù)方法中,用戶使用的軟件是經(jīng)過(guò)指令變形的軟件,所述軟件中用于調(diào)用 加密鎖的代碼是在軟件被交付用戶之前對(duì)該軟件中用于調(diào)用加密鎖的原始代碼進(jìn)行變換 生成的新代碼,對(duì)所述原始代碼進(jìn)行變換的方法是對(duì)所述原始代碼進(jìn)行指令變形。經(jīng)過(guò)變 換后,受保護(hù)軟件中用于調(diào)用加密鎖的新代碼可能是PUSH offset_Cl_buffPUSH offset_T_buffPUSH 0FFSET_ ? LIV_encrypt ?RET...顯然,原來(lái)特征明顯的CALL指令被PUSH和RET組合指令替代,破解者無(wú)法直接搜 索到對(duì)應(yīng)的指令,顯然無(wú)法直接獲得LIV_enCrypt函數(shù)的輸入和輸出,軟件保護(hù)方案的安 全性得到了提升。其中,所述受保護(hù)軟件中為調(diào)用所述加密鎖準(zhǔn)備輸入數(shù)據(jù)的代碼和對(duì)所述加密鎖 的返回結(jié)果進(jìn)行處理的代碼是進(jìn)行代碼變換的重點(diǎn)。此外,為了進(jìn)一步提高本實(shí)施例提供的軟件的保護(hù)方法的安全性,所述加密鎖API 接口也是經(jīng)過(guò)指令變形的加密鎖API接口,所述加密鎖API接口的代碼是在加密鎖API接 口被交付用戶之前對(duì)加密鎖API接口的原始代碼進(jìn)行變換生成的新代碼,尤其是加密鎖 API接口的入口部分的代碼,通過(guò)該變換使受保護(hù)軟件和加密鎖API接口之間的界限難以 區(qū)分。最后,對(duì)所述受保護(hù)軟件中用于調(diào)用加密鎖的原始代碼和所述加密鎖API接口的 原始代碼進(jìn)行變換的規(guī)則是動(dòng)態(tài)的,每次所述變換生成的新代碼均不相同。實(shí)施例二 本實(shí)施例提供的軟件的保護(hù)方法包括如下步驟利用計(jì)算機(jī)中的軟件開(kāi)發(fā)工具計(jì)算明文T的變換結(jié)果C ;在受保護(hù)軟件中存儲(chǔ)明文T和變換結(jié)果C ;受保護(hù)軟件通過(guò)加密鎖API接口調(diào)用加密鎖,輸入明文T,返回變換結(jié)果Cl ;受保護(hù)軟件對(duì)比C和Cl,若相等,則受保護(hù)軟件繼續(xù)運(yùn)行,否則受保護(hù)軟件終止運(yùn) 行。軟件開(kāi)發(fā)商在將受保護(hù)軟件交付用戶之前,經(jīng)過(guò)編譯,受保護(hù)軟件中用于調(diào)用加 密鎖的原始代碼可能是
      PUSH offset_Cl_buffPUSH offset_T_buffCALL ? LIV_encrypt ?這三行原始代碼用于通過(guò)加密鎖API接口的LIV_Encrypt函數(shù)調(diào)用加密鎖計(jì)算 Cl ;PUSH offset_Cl_buffPUSH Offset_C_buffCALL ? MEMCMP ?JNZ ? EXIT ?這四行原始代碼用于比較C和Cl。根據(jù)上述代碼,破解者能夠很容易地找到CALL LIV_enCrypt ?指令并設(shè)置斷 點(diǎn),并跟蹤參數(shù)傳遞過(guò)程獲得LIV_enCrypt函數(shù)的輸入數(shù)據(jù)和輸出數(shù)據(jù),最終通過(guò)模擬 LIV_encrypt函數(shù)來(lái)直接返回明文T對(duì)應(yīng)的輸出C,欺騙受保護(hù)軟件。圖3為本發(fā)明的軟件的保護(hù)方法的實(shí)施例二的示意圖。如圖3所示,在本實(shí)施例 提供的軟件的保護(hù)方法中,用戶使用的軟件是經(jīng)過(guò)虛擬機(jī)代碼變換的軟件,所述受保護(hù)軟 件中用于調(diào)用加密鎖的代碼是在軟件被交付用戶之前對(duì)該軟件中用于調(diào)用加密鎖的原始 代碼進(jìn)行變換生成的新代碼,對(duì)所述原始代碼進(jìn)行變換的方法是將所述原始代碼變換為 虛擬機(jī)代碼,使分析反編譯后的代碼和破解變得極為困難,甚至無(wú)法設(shè)置有效的斷點(diǎn)。經(jīng)過(guò)這樣的處理之后,破解者想要分析受保護(hù)軟件和加密鎖之間的交互關(guān)系,則 必須要先將轉(zhuǎn)換后的代碼完全分析出來(lái)才能進(jìn)行,這就就增加了整個(gè)保護(hù)方案的安全性。其中,所述受保護(hù)軟件中為調(diào)用所述加密鎖準(zhǔn)備輸入數(shù)據(jù)的代碼和對(duì)所述加密鎖 的返回結(jié)果進(jìn)行處理的代碼是進(jìn)行代碼變換的重點(diǎn)。此外,為了進(jìn)一步提高本實(shí)施例提供的軟件的保護(hù)方法的安全性,所述加密鎖API 接口也是經(jīng)過(guò)虛擬機(jī)代碼變換的加密鎖API接口,所述加密鎖API接口的代碼是在加密鎖 API接口被交付用戶之前對(duì)加密鎖API接口的原始代碼進(jìn)行變換生成的新代碼,尤其是加 密鎖API接口的入口部分的代碼,通過(guò)該變換使受保護(hù)軟件和加密鎖API之間的界限難以 區(qū)分。最后,對(duì)所述受保護(hù)軟件中用于調(diào)用加密鎖的原始代碼和所述加密鎖API接口的 原始代碼進(jìn)行變換的規(guī)則是動(dòng)態(tài)的,每次所述變換生成的新代碼均不相同。以上實(shí)施例僅為本發(fā)明的示例性實(shí)施例,不用于限制本發(fā)明,本發(fā)明的保護(hù)范圍 由權(quán)利要求書限定。本領(lǐng)域技術(shù)人員可以在本發(fā)明的實(shí)質(zhì)和保護(hù)范圍內(nèi),對(duì)本發(fā)明做出各 種修改或等同替換,這種修改或等同替換也應(yīng)視為落在本發(fā)明的保護(hù)范圍內(nèi)。
      權(quán)利要求
      1.一種軟件的保護(hù)方法,包括受保護(hù)軟件在運(yùn)行過(guò)程中通過(guò)加密鎖API接口調(diào)用連 接在該受保護(hù)軟件所在計(jì)算機(jī)上的加密鎖,若返回結(jié)果正確,則受保護(hù)軟件繼續(xù)運(yùn)行,若返 回結(jié)果錯(cuò)誤,則受保護(hù)軟件終止運(yùn)行,其特征在于,所述受保護(hù)軟件中用于調(diào)用加密鎖的代 碼是在軟件被交付用戶之前對(duì)該軟件中用于調(diào)用加密鎖的原始代碼進(jìn)行變換生成的新代碼。
      2.根據(jù)權(quán)利要求1所述的軟件的保護(hù)方法,其特征在于,所述受保護(hù)軟件中用于調(diào)用 加密鎖的代碼包括為調(diào)用所述加密鎖準(zhǔn)備輸入數(shù)據(jù)的代碼和對(duì)所述加密鎖的返回結(jié)果進(jìn) 行處理的代碼。
      3.根據(jù)權(quán)利要求1所述的軟件的保護(hù)方法,其特征在于,所述加密鎖API接口的代碼是 在加密鎖API接口被交付用戶之前對(duì)加密鎖API接口的原始代碼進(jìn)行變換生成的新代碼。
      4.根據(jù)權(quán)利要求3所述的軟件的保護(hù)方法,其特征在于,所述加密鎖API接口的代碼包 括加密鎖API接口的入口的代碼。
      5.根據(jù)權(quán)利要求1或3所述的軟件的保護(hù)方法,其特征在于,對(duì)所述原始代碼進(jìn)行變換 的方法是將所述原始代碼進(jìn)行指令變形或?qū)⑺鲈即a變換為虛擬機(jī)代碼。
      6.根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的軟件的保護(hù)方法,其特征在于,對(duì)所述受保護(hù)軟 件中用于調(diào)用加密鎖的原始代碼進(jìn)行變換的規(guī)則是動(dòng)態(tài)的,每次所述變換生成的新代碼均 不相同。
      7.根據(jù)權(quán)利要求3或4所述的軟件的保護(hù)方法,其特征在于,對(duì)所述加密鎖API接口的 原始代碼進(jìn)行變換的規(guī)則是動(dòng)態(tài)的,每次所述變換生成的新代碼均不相同。
      全文摘要
      本發(fā)明公開(kāi)了一種軟件的保護(hù)方法,包括受保護(hù)軟件在運(yùn)行過(guò)程中通過(guò)加密鎖API接口調(diào)用連接在該受保護(hù)軟件所在計(jì)算機(jī)上的加密鎖,若返回結(jié)果正確,則受保護(hù)軟件繼續(xù)運(yùn)行,若返回結(jié)果錯(cuò)誤,則受保護(hù)軟件終止運(yùn)行,所述受保護(hù)軟件中用于調(diào)用加密鎖的代碼是在軟件被交付用戶之前對(duì)該軟件中用于調(diào)用加密鎖的原始代碼進(jìn)行變換生成的新代碼。在本發(fā)明提供的軟件的保護(hù)方法中,受保護(hù)軟件中用于調(diào)用加密鎖的代碼已被轉(zhuǎn)換成破解者難以分析的代碼,使破解者無(wú)法跟蹤受保護(hù)軟件調(diào)用加密鎖時(shí)的輸入數(shù)據(jù)和輸出數(shù)據(jù),因而使受保護(hù)軟件和加密鎖API接口之間的數(shù)據(jù)交互得到了保護(hù),提高了破解者分析的難度,從而提高了基于加密鎖的軟件保護(hù)方法的安全強(qiáng)度。
      文檔編號(hào)G06F21/22GK102136052SQ201110110148
      公開(kāi)日2011年7月27日 申請(qǐng)日期2011年4月29日 優(yōu)先權(quán)日2011年4月29日
      發(fā)明者孫吉平, 韓勇 申請(qǐng)人:北京深思洛克軟件技術(shù)股份有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1