国产精品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>

      軟件產(chǎn)品保護(hù)方法與流程

      文檔序號(hào):11951450閱讀:245來源:國(guó)知局
      軟件產(chǎn)品保護(hù)方法與流程

      本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其關(guān)于一種軟件產(chǎn)品保護(hù)方法。



      背景技術(shù):

      Java是一種可以撰寫跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。Java技術(shù)具有卓越的通用性、高效性、平臺(tái)移植性和安全性,廣泛應(yīng)用于PC、數(shù)據(jù)中心、游戲控制臺(tái)、科學(xué)超級(jí)計(jì)算機(jī)、移動(dòng)電話和互聯(lián)網(wǎng)。Java源代碼被編譯成Java字節(jié)碼文件,由Java虛擬機(jī)負(fù)責(zé)對(duì)Java字節(jié)碼文件進(jìn)行解釋執(zhí)行,具有高度的靈活性,然而,只要有一個(gè)反編譯器,對(duì)計(jì)算機(jī)軟件進(jìn)行反編譯,任何人都可以分析Java程序的源代碼,使得源代碼很容易被破解竊取?,F(xiàn)有的商用軟件產(chǎn)品在出售或試用時(shí)都會(huì)帶有授權(quán)的license文件,license文件中包含了對(duì)軟件產(chǎn)品的廠商、產(chǎn)品名稱、授權(quán)信息、有效期、MAC綁定等license信息,軟件產(chǎn)品通過license驗(yàn)證程序?qū)icense信息進(jìn)行驗(yàn)證,驗(yàn)證通過才能獲得相應(yīng)的使用權(quán)限,從而達(dá)到保護(hù)軟件產(chǎn)品的目的。然而,由于Java源代碼很容易被竊取,而后可根據(jù)Java源代碼即可破解License文件,對(duì)其進(jìn)行偽造或修改,或者通過修改軟件產(chǎn)品程序代碼,繞過license驗(yàn)證程序或修改license驗(yàn)證程序使其失效,從而使得license文件無法保護(hù)軟件產(chǎn)品,并最終導(dǎo)致商用軟件產(chǎn)品被剽竊或者被篡改。由此可見,如何更完善的保護(hù)軟件產(chǎn)品已成為當(dāng)下亟待研究的課題。



      技術(shù)實(shí)現(xiàn)要素:

      為了解決背景技術(shù)中存在的問題,本發(fā)明提供軟件產(chǎn)品保護(hù)方法,該方法通過改進(jìn)license文件以及l(fā)icense信息的驗(yàn)證方式,可防止license驗(yàn)證程序被繞過或者被修改,以達(dá)到保護(hù)軟件產(chǎn)品的目的。

      本發(fā)明提供一種軟件產(chǎn)品的保護(hù)方法,包含步驟:生成license文件,包括步驟:從軟件產(chǎn)品中分離出啟動(dòng)程序與主體程序,整合所述啟動(dòng)程序與license驗(yàn)證程序,形成引導(dǎo)程序,合并所述引導(dǎo)程序、license信息,生成所述license文件;在運(yùn)行所述主體程序之前,驗(yàn)證所述license文件,驗(yàn)證通過,則運(yùn)行所述主體程序。

      在一較佳實(shí)施例中,合并生成所述license文件時(shí),同時(shí)合并數(shù)字證書及秘密密鑰。

      在一較佳實(shí)施例中,在生成所述license文件中的所述合并步驟之前,更包含對(duì)所述引導(dǎo)程序進(jìn)行加密的步驟:通過所述數(shù)字證書的私鑰為所述引導(dǎo)程序生成數(shù)字摘要,并通過所述秘密密鑰為所述引導(dǎo)程序及所述引導(dǎo)程序的數(shù)字摘要進(jìn)行加密,加密后得到的加密引導(dǎo)程序與加密引導(dǎo)程序的數(shù)字摘要在所述合并步驟中被合并至所述license文件中。

      在一較佳實(shí)施例中,在生成所述license文件中的所述合并步驟之前,更包含對(duì)所述license信息進(jìn)行加密的步驟:通過所述數(shù)字證書的私鑰為所述license信息生成數(shù)字摘要,并通過所述秘密密鑰為所述license信息及所述license信息的數(shù)字摘要進(jìn)行加密,加密后得到的加密license信息與加密license信息的數(shù)字摘要在所述合并步驟中被合并至所述license文件中。

      在一較佳實(shí)施例中,在所述加密步驟之后,且所述合并步驟之前,更包含對(duì)所述秘密密鑰加密的步驟:通過所述數(shù)字證書的私鑰為所述秘密密鑰進(jìn)行加密,加密后得到的加密秘密密鑰在所述合并步驟中被合并至所述license文件中。

      在一較佳實(shí)施例中,所述驗(yàn)證所述license信息的方法包括步驟:從所述license文件中解析出所述引導(dǎo)程序及所述license信息;執(zhí)行所述引導(dǎo)程序中的所述license驗(yàn)證程序,對(duì)所述license信息進(jìn)行驗(yàn)證;驗(yàn)證通過,則執(zhí)行所述引導(dǎo)程序中的所述啟動(dòng)程序,進(jìn)而運(yùn)行所述主體程序。

      在一較佳實(shí)施例中,所述license文件存儲(chǔ)在移動(dòng)存儲(chǔ)器中。

      本發(fā)明通過提供的軟件產(chǎn)品的保護(hù)方法,通過將軟件產(chǎn)品的啟動(dòng)程序與主體程序分離,并將啟動(dòng)程序與license驗(yàn)證程序進(jìn)行整合,使得license信息必須通過license驗(yàn)證程序的驗(yàn)證,才能正常運(yùn)行啟動(dòng) 程序,進(jìn)而運(yùn)行主體程序,也就是說,若license信息無法通過license驗(yàn)證程序的驗(yàn)證,或license驗(yàn)證程序被繞過,那么軟件產(chǎn)品的啟動(dòng)程序?qū)o法正常運(yùn)行,從而使得軟件產(chǎn)品的主體程序根本無法加載運(yùn)行,更進(jìn)一步的,本發(fā)明的較佳實(shí)施例中,通過對(duì)引導(dǎo)程序和license信息的以及秘密密鑰的加密,以及對(duì)license文件驗(yàn)證方法的改進(jìn),提高了license文件的破解難度,從而能更好的對(duì)軟件產(chǎn)品進(jìn)行保護(hù)。

      附圖說明

      圖1繪示本發(fā)明一較佳實(shí)施例所提供的軟件產(chǎn)品的保護(hù)方法流程圖;

      圖2繪示本發(fā)明一較佳實(shí)施例中所提供的license文件生成方法流程圖;

      圖3繪示本發(fā)明一較佳實(shí)施例中所提供的license文件生成方法流程圖;

      圖4繪示本發(fā)明一較佳實(shí)施例中所提供的license文件生成方法流程圖;

      圖5繪示本發(fā)明一較佳實(shí)施例中所提供的license文件生成方法流程圖;

      圖6繪示本發(fā)明一較佳實(shí)施例所提供的license文件驗(yàn)證方法流程圖。

      具體實(shí)施方式

      為使本發(fā)明的技術(shù)方案及其優(yōu)點(diǎn)更加明確和詳細(xì),以下將參照?qǐng)D示進(jìn)行說明。

      請(qǐng)參閱圖1,圖1繪示本發(fā)明一較佳實(shí)施例所提供的軟件產(chǎn)品的保護(hù)方法流程圖。如圖1所示,軟件產(chǎn)品的保護(hù)方法包含步驟:生成license文件;驗(yàn)證license文件,若驗(yàn)證通過,則運(yùn)行軟件產(chǎn)品的主體程序,若驗(yàn)證不通過,則退出運(yùn)行。

      具體而言,請(qǐng)參閱圖2,圖2繪示本發(fā)明一較佳實(shí)施例中所提供的license文件生成方法流程圖。如圖2所示,生成license文件的方法包含如下步驟:

      S1,從軟件產(chǎn)品中分離出啟動(dòng)程序與主體程序。軟件產(chǎn)品的啟動(dòng)程序是指在運(yùn)行軟件產(chǎn)品的主體程序之前必須執(zhí)行的啟動(dòng)引導(dǎo)程序,例如,為軟件產(chǎn)品的主體程序搭載運(yùn)行環(huán)境,對(duì)軟件產(chǎn)品的主體程序進(jìn)行加載,也就是說,如果軟件產(chǎn)品的啟動(dòng)程序無法正常執(zhí)行的話,軟件產(chǎn)品的主體程序?qū)o法啟動(dòng)。軟件產(chǎn)品的主體程序的是指實(shí)現(xiàn)各種具體業(yè)務(wù)功能的程序,是軟件產(chǎn)品的主要價(jià)值體現(xiàn)。本步驟中,分離啟動(dòng)程序與主體程序的方式是通過代碼分離的方式,將啟動(dòng)程序與主體程序的代碼相互分離獨(dú)立。本發(fā)明的實(shí)施例中,軟件產(chǎn)品使用的開發(fā)語言為java語言。

      S2,整合啟動(dòng)程序與license驗(yàn)證程序,形成引導(dǎo)程序。本步驟中,通過整合代碼的方式將啟動(dòng)程序與license驗(yàn)證程序進(jìn)行整合。

      S3,合并引導(dǎo)程序、license信息,生成license文件。本步驟中,通過設(shè)計(jì)自定義字節(jié)碼文件規(guī)則,將引導(dǎo)程序、license信息按照自定義字節(jié)碼文件規(guī)則寫入到同一個(gè)文件中,從而生成license文件。本發(fā)明的實(shí)施例中,license信息為軟件產(chǎn)品授權(quán)許可信息,包含:廠商、產(chǎn)品名稱、授權(quán)信息、有效期、MAC綁定等。

      根據(jù)上述步驟所生成的license文件中,即包含了軟件產(chǎn)品的license信息,又包含了軟件產(chǎn)品的啟動(dòng)程序以及l(fā)icense驗(yàn)證程序,通過將軟件產(chǎn)品的啟動(dòng)程序與主體程序分離,并把啟動(dòng)程序整合進(jìn)license文件中,增加了軟件產(chǎn)品的破解難度,達(dá)到了保護(hù)軟件產(chǎn)品的目的。

      為了更進(jìn)一步的提升對(duì)軟件產(chǎn)品的保護(hù)力度,本發(fā)明的其他較佳實(shí)施例中可通過對(duì)引導(dǎo)程序或license信息進(jìn)行加密,增加license文件的破解難度。以下將分別借助圖3至圖5對(duì)該些較佳實(shí)施例進(jìn)行詳細(xì)說明。

      請(qǐng)參閱圖3,圖3繪示本發(fā)明一較佳實(shí)施例中所提供的license文件生成方法流程圖。如圖3所示,本實(shí)施例與圖2所示實(shí)施例的區(qū)別在于,更包含步驟S203,位于步驟S2之后、步驟S3之前。步驟S203是對(duì)引導(dǎo)程序進(jìn)行加密的步驟。本實(shí)施例中,加密引導(dǎo)程序方法是通過數(shù)字證書及秘密密鑰的手段來實(shí)現(xiàn) 的,詳細(xì)而言,包括通過數(shù)字證書的私鑰為引導(dǎo)程序生成數(shù)字摘要,并通過秘密密鑰為引導(dǎo)程序及引導(dǎo)程序的數(shù)字摘要進(jìn)行加密,得到加密引導(dǎo)程序與加密引導(dǎo)程序的數(shù)字摘要。可以理解的是,本實(shí)施例提供的license文件生成方法中,步驟S3在合并生成license文件時(shí),合并的是加密引導(dǎo)程序以及加密引導(dǎo)程序的數(shù)字摘要,與圖2所示license文件生成方法中的步驟S3合并的內(nèi)容不同,但是合并的方法都相同,故在此不在贅述。通過本實(shí)施例中的方法所生成的license文件,由于對(duì)引導(dǎo)程序做了數(shù)字摘要,并對(duì)兩者都進(jìn)行了加密,若想要對(duì)license文件進(jìn)行破解,則不僅需要了解自定義字節(jié)碼文件規(guī)則,還需要完成對(duì)引導(dǎo)程序及其數(shù)字摘要的正確解密,以及通過引導(dǎo)程序數(shù)字摘要的驗(yàn)證,由此可見,通過本實(shí)施例所提供的license文件生成方法,可更大程度的提升license文件的破解難度,從而對(duì)軟件產(chǎn)品提供更堅(jiān)實(shí)的保護(hù)。

      請(qǐng)參閱圖4,圖4繪示本發(fā)明一較佳實(shí)施例中所提供的license文件生成方法流程圖。如圖4所示,本實(shí)施例與圖3所示實(shí)施例的區(qū)別在于,更包含步驟S213,位于步驟S3之前。步驟S213是對(duì)license信息進(jìn)行加密的步驟。本實(shí)施例中,加密license信息的方法是通過數(shù)字證書及秘密密鑰的手段來實(shí)現(xiàn)的,詳細(xì)而言,包括通過數(shù)字證書的私鑰為license信息生成數(shù)字摘要,并通過秘密密鑰為license信息及l(fā)icense信息的數(shù)字摘要進(jìn)行加密,得到加密license信息與加密license信息的數(shù)字摘要??梢岳斫獾氖?,本實(shí)施例提供的license文件生成方法中,步驟S3在合并生成license文件時(shí),合并的是加密license信息以及加密license信息的數(shù)字摘要,與圖3所示license文件生成方法中的步驟S3合并的內(nèi)容不同,但是合并的方法都相同,故在此不在贅述。不難看出,本實(shí)施例是基于圖3所示實(shí)施例的進(jìn)一步改進(jìn),相較于圖2所示的實(shí)施例而言,不僅對(duì)引導(dǎo)程序進(jìn)行了加密,還對(duì)license信息也同樣進(jìn)行了加密,由此可見,通過本實(shí)施例的方法所生成的license文件,不僅具備圖2及圖3所示實(shí)施例生成的license文件的特征,還通過對(duì)license信息的加密,使得license文件的破解步驟更復(fù)雜,從而更進(jìn)一步提升了license文件的破解難度??梢岳斫獾氖牵緦?shí)施例中的步驟S213與步驟S203相互之間是獨(dú)立的,也就是說,在本發(fā)明的其他實(shí)施例中,在生成license文件的方法中,也可以按照實(shí)際需求,只包含對(duì)license信息加密的步驟S213,而不包含對(duì)引導(dǎo)程序進(jìn)行加密的步驟S203,故這一實(shí)施例,也應(yīng)屬于本發(fā)明所保護(hù)的范疇。

      請(qǐng)參閱圖5,圖5繪示本發(fā)明一較佳實(shí)施例中所提供的license文件生成方法流程圖。如圖5所示,本實(shí)施例與圖4所示實(shí)施例的區(qū)別在于,更包含步驟S223,位于步驟S203及S213之后、步驟S3之前。步驟S223是對(duì)秘密密鑰進(jìn)行加密的步驟。本實(shí)施例中,加密秘密密鑰的方法是通過數(shù)字證書的私鑰為秘密密鑰進(jìn)行加密,得到加密秘密密鑰??梢岳斫獾氖?,本實(shí)施例提供的license文件生成方法中,相較于圖4所示實(shí)施例而言,在步驟S3合并生成license文件時(shí),不僅合并了加密引導(dǎo)程序及其加密數(shù)字摘要、加密license信息及其加密數(shù)字摘要,還更進(jìn)一步的合并了加密秘密密鑰,同樣的,合并的方法都相同,故在此不在贅述。

      值得注意的是,圖3至5所示的實(shí)施例中,在新增的步驟S203、S213或S223中,使用的加密手段都是通過數(shù)字證書的私鑰及秘密密鑰,由于license文件在正常使用過程中,需進(jìn)行解密和驗(yàn)證,而解密和驗(yàn)證所需的數(shù)字證書的公鑰及秘密密鑰也都包含分別在數(shù)字證書文件及秘密密鑰文件中,可以理解的是,在圖3至圖5所示的實(shí)施例中,步驟S3中合并的文件更包含了數(shù)字證書及秘密密鑰(或加密秘密密鑰)。

      通過上述圖示及描述,對(duì)本發(fā)明的軟件保護(hù)方法中的生成license文件的方法進(jìn)行了詳細(xì)說明,以下將結(jié)合圖示,對(duì)圖1所示實(shí)施例中的license文件驗(yàn)證的方法進(jìn)行詳細(xì)說明。

      請(qǐng)參照?qǐng)D6,圖6繪示本發(fā)明一較佳實(shí)施例所提供的license文件驗(yàn)證方法流程圖。本實(shí)施例中的驗(yàn)證方法,是針對(duì)圖2所示實(shí)施例生成的license文件的驗(yàn)證方法,如圖6所示,license文件驗(yàn)證方法包括如下步驟:

      A1,從license文件中解析出引導(dǎo)程序及l(fā)icense信息。具體而言,在軟件產(chǎn)品啟動(dòng)時(shí),由于啟動(dòng)程序被分離并合并寫入到License文件中,通過正常的途徑無法完成軟件產(chǎn)品的正常啟動(dòng),所以必須通過Java虛擬機(jī)提供的底層ClassLoader擴(kuò)展機(jī)制,擴(kuò)展實(shí)現(xiàn)自定義的ClassLoader,由自定義ClassLoader接管Java虛擬機(jī)對(duì)啟動(dòng)程序的裝載和執(zhí)行過程,通過對(duì)findclass方法的重寫,按照自定義字節(jié)碼文件規(guī)則,對(duì)license文件進(jìn)行解析,還原出引導(dǎo)程序,執(zhí)行引導(dǎo)程序。

      A2,執(zhí)行引導(dǎo)程序中的license驗(yàn)證程序,對(duì)license信息進(jìn)行驗(yàn)證。當(dāng)引導(dǎo)程序被解析還原出來后則可執(zhí)行引導(dǎo)程序,本發(fā)明的實(shí)施例中,當(dāng)引導(dǎo)程序被執(zhí)行后,就開始由引導(dǎo)程序接管整個(gè)啟動(dòng)過程。引導(dǎo)程序在執(zhí)行過程中先將license信息從license文件中解析還原,再通過內(nèi)部license驗(yàn)證程序?qū)icense信息進(jìn)行驗(yàn)證。其中,本發(fā)明的實(shí)施例中,license驗(yàn)證程序可通過有效期驗(yàn)證的方式或者有效期及marc地址綁定的方式對(duì)license信息進(jìn)行驗(yàn)證,但本發(fā)明并不限于此,也可以通過其他驗(yàn)證方式進(jìn)行驗(yàn)證。

      通過license驗(yàn)證程序?qū)icense信息進(jìn)行驗(yàn)證,根據(jù)驗(yàn)證結(jié)果,選擇后續(xù)的處理方式,若驗(yàn)證通過,則執(zhí)行引導(dǎo)程序中的啟動(dòng)程序,進(jìn)而運(yùn)行主體程序,以完成軟件產(chǎn)品的正常啟動(dòng);若驗(yàn)證不通過,則直接退出引導(dǎo)程序的執(zhí)行,軟件產(chǎn)品將無法啟動(dòng)。

      本發(fā)明實(shí)施例中所提供的license文件驗(yàn)證方法,需先調(diào)用自定義類加載器,按照生成license文件時(shí)所使用的自定義字節(jié)碼文件規(guī)則對(duì)license文件進(jìn)行解析還原,再由引導(dǎo)程序執(zhí)行l(wèi)icense驗(yàn)證程序,以完成license信息的驗(yàn)證。在獲得license信息驗(yàn)證結(jié)果之前,無論是軟件產(chǎn)品的啟動(dòng)程序還是主體程序,都不會(huì)有任何的動(dòng)作,從而避免了license信息的驗(yàn)證被繞過,對(duì)軟件產(chǎn)品提供了保護(hù)。

      針對(duì)圖3至圖5所示實(shí)施例中生成的license文件的驗(yàn)證方法中,更包含對(duì)license文件中的數(shù)字證書及秘密密鑰(或加密秘密密鑰)進(jìn)行解析,以及對(duì)引導(dǎo)程序、license信息及相應(yīng)的數(shù)字摘要進(jìn)行解密和驗(yàn)證的過程,由此可見,license文件的驗(yàn)證方法將隨著license文件生成方法的不同而不同,進(jìn)一步提高了license驗(yàn)證程序被破解或者繞過的難度。

      綜上所述,本發(fā)明所提供的軟件保護(hù)方法中通過對(duì)license文件的改進(jìn),并嚴(yán)格對(duì)license文件的驗(yàn)證過程進(jìn)行管控,提升了license文件破解難度,以及軟件產(chǎn)品被修改的難度。舉例而言,若想要破解圖5所示實(shí)施例中生成的license文件,首先需要正確的了解license文件的自定義字節(jié)碼結(jié)構(gòu)、正確完整地解析出各個(gè)組成模塊、偽造公鑰、私鑰、秘密密鑰、License信息,并按照加密邏輯規(guī)則和自定義字節(jié)碼文件規(guī)則重新生成License文件或反編譯還原出引導(dǎo)程序,提取引導(dǎo)程序中的啟動(dòng)程序代碼,翻譯主體程序,將啟動(dòng)代碼加入到軟件主體中,從而繞過License校驗(yàn)過程,由此可見,破解程序非常復(fù)雜,難度也非常高。

      更近一步的,為了更好對(duì)軟件產(chǎn)品提供保護(hù),可以將license文件寫入到USBKey等移動(dòng)存儲(chǔ)器中,并在自定義類加載器ClassLoader的findclass方法中執(zhí)行從USBKey中讀取License文件的步驟,從而完成引導(dǎo)和驗(yàn)證過程。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1