基于殼技術的軟件保護方法和裝置制造方法
【專利摘要】本發明提供一種基于殼技術的軟件保護方法,其特征在于,包括:由編譯模塊將主程序編譯為動態鏈接庫文件;由編譯模塊編寫殼程序;由執行模塊將所述主程序的運行入口移入殼程序,并由編譯模塊將殼程序編譯生成可執行程序;以及由執行模塊執行殼程序,通過殼程序動態加載并運行主程序。本發明提供的軟件保護方法,可以防止對軟件的非法拷貝,針對計算機硬件指紋授權,對于網絡版,可以防止非本服務器的客戶端訪問服務,實現了高強度的軟件保護。
【專利說明】基于殼技術的軟件保護方法和裝置
【技術領域】
[0001]本發明涉及計算機軟件保護【技術領域】,并且特別涉及一種基于殼技術的軟件保護方法和裝置。
【背景技術】
[0002]隨著計算機軟件技術的發展,惡意軟件的感染破壞能力、破解者的水平都有大幅提升,對于安全性要求高的軟件來說,傳統的軟加密和硬加密方案的保護效果已不再明顯,軟件加密技術逐漸成熟,其中,殼加密技術便是我們常用的一種軟件保護手段。
[0003]殼是對加密軟件的一個形象的比喻,指的是軟件外部的一件“外衣”,是軟件的保護屏障。殼加密技術是指利用某種算法,對可移植的可執行文件進行加密、壓縮,給文件加上一個外殼,使惡意攻擊者無法在對軟件反匯編后,直接找到軟件的核心代碼。軟件殼是一段為了防止軟件被非法使用、篡改、拷貝等的程序,它通常先于原程序運行,并且在運行后獲得了軟件的控制權,利用其保護功能對軟件進行安全保護。具體而言,先運行殼程序,殼將加密的主程序(即原來的待加殼的程序)代碼解密到內存中,運行其中相應功能,并將程序的控制權交還給主程序。
[0004]在Win32環境中,軟件加殼技術已經有非常成熟的商業產品。但是,對于.NET環境下的軟件,由于.NET程序的編譯結果不是機器語言代碼,而是一種MSIL中間代碼,因此,不能使用傳統的加殼技術,而是需要一種在.NET環境下使用的軟件加殼方法。
【發明內容】
[0005]本發明的目的在于提供一種基于殼技術的軟件保護方法和裝置。
[0006]本發明實施例提供一種基于殼技術的軟件保護方法,其特征在于,包括:由編譯模塊將主程序編譯為動態鏈接庫文件;由所述編譯模塊編寫殼程序;由執行模塊將所述主程序的運行入口移入所述殼程序,并由所述編譯模塊將所述殼程序編譯生成可執行程序;以及由所述執行模塊執行所述殼程序,通過所述殼程序動態加載并運行所述主程序。
[0007]優選地,由編譯模塊將主程序編譯為動態鏈接庫文件的所述步驟之后,還包括:由加密模塊通過計算機硬件指紋加密所述動態鏈接庫文件。
[0008]優選地,所述計算機硬件指紋指的是計算機硬件信息中的識別號。
[0009]優選地,由執行模塊將所述主程序的運行入口移入所述殼程序,并由所述編譯模塊將所述殼程序編譯生成可執行程序的所述步驟之后,還包括:對所述可執行程序進行混淆或加密。
[0010]優選地,在所述殼程序加載所述動態鏈接庫文件時,將所述動態鏈接庫文件解密到內存中,并加載運行。
[0011]本發明實施例提供一種基于殼技術的軟件保護裝置,其特征在于,包括:編譯模塊,用于將主程序編譯為動態鏈接庫文件,編寫殼程序,并將所述殼程序編譯生成可執行程序;以及執行模塊,耦合于所述編譯模塊,用于將所述主程序的運行入口移入所述殼程序,執行所述殼程序,并通過所述殼程序動態加載并運行所述主程序。
[0012]優選地,還包括:加密模塊,耦合于所述編譯模塊,用于通過計算機硬件指紋加密所述動態鏈接庫文件。
[0013]優選地,所述計算機硬件指紋指的是計算機硬件信息中的識別號。
[0014]優選地,所述加密模塊還用于對所述可執行程序進行混淆或加密。
[0015]優選地,所述執行模塊還用于在所述殼程序加載所述動態鏈接庫文件時,將所述動態鏈接庫文件解密到內存中,并加載運行。
[0016]本發明提供的基于殼技術的軟件保護裝置和方法,通過使用數字簽名、MSIL代碼混淆、加密等技術,可以防止對軟件的非法拷貝,針對計算機硬件指紋授權,對于網絡版,可以防止非本服務器的客戶端訪問服務,實現了高強度的軟件保護。此外,由于使用自編的加殼技術,加密技術可以自行設計,并且可以隨時調整,而且,用戶數不多,因此,攻擊者比較少,用這種技術加密的軟件安全性也就相對更好。
【專利附圖】
【附圖說明】
[0017]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0018]圖1是本發明一實施例提供的基于殼技術的軟件保護裝置的結構示意圖。
[0019]圖2是本發明一實施例提供的基于殼技術的軟件保護方法的具體流程圖。
【具體實施方式】
[0020]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
[0021]圖1是本發明一實施例提供的基于殼技術的軟件保護裝置的結構示意圖。如圖1所示,軟件保護裝置100包括編譯模塊110、耦合于編譯模塊110的加密模塊120和執行模塊 130。
[0022]在本發明一實施例中,編譯模塊110用于將主程序(即待加殼的程序)編譯為動態鏈接庫(DLL)文件,編寫殼程序,并將殼程序編譯生成可執行程序。其中,可利用第三方工具對生成的可執行程序進行混淆或加密。其中,可利用“XenoCode”軟件和MaxtoCode”軟件對可執行程序的MSIL代碼進行混淆或加密。
[0023]在本發明一實施例中,加密模塊120用于利用加密工具(例如,自編的加密工具)通過輸入計算機硬件指紋將生成的DLL文件分別進行加密。其中,計算機硬件指紋指的是計算機硬件信息中的識別號(例如,CPU和硬盤的序列號等),是固定不變的。
[0024]在本發明一實施例中,執行模塊130用于將主程序的運行入口(即main函數)移入殼程序,執行殼程序,并通過殼程序動態加載并運行主程序。其中,在殼程序加載DLL文件時,臨時將DLL文件解密到內存中,并加載運行,解密的DLL文件只存在于內存中。
[0025]有利地,本發明提供的基于殼技術的軟件保護裝置,通過使用數字簽名、MSIL代碼混淆、加密等技術,可以防止對軟件的非法拷貝,針對計算機硬件指紋授權,對于網絡版,可以防止非本服務器的客戶端訪問服務,實現了高強度的軟件保護。此外,由于使用自編的加殼技術,加密技術可以自行設計,并且可以隨時調整,而且,用戶數不多,因此,攻擊者比較少,用這種技術加密的軟件安全性也就相對更好。
[0026]圖2是本發明一實施例提供的基于殼技術的軟件保護方法200的具體流程圖。如圖2所示,軟件保護方法200包括以下步驟。
[0027]步驟S202:由編譯模塊110將主程序(即待加殼的程序)編譯為動態鏈接庫(DLL)文件。
[0028]在本發明一實施例中,還包括由加密模塊120利用加密工具(例如,自編的加密工具)通過輸入計算機硬件指紋將生成的DLL文件分別進行加密。其中,計算機硬件指紋指的是計算機硬件信息中的識別號(例如,CPU和硬盤的序列號等),是固定不變的。
[0029]步驟S204:由編譯模塊110編寫殼程序。
[0030]步驟206:由執行模塊130將主程序的運行入口(即main函數)移入殼程序,并由編譯模塊110將殼程序編譯生成可執行程序。
[0031]優選地,可利用第三方工具對生成的可執行程序進行混淆或加密。其中,可利用“XenoCode”軟件和MaxtoCode”軟件對可執行程序的MSIL代碼進行混淆或加密。
[0032]步驟S208:由執行模塊130,執行殼程序,通過殼程序動態加載并運行主程序。其中,在殼程序加載DLL文件時,臨時將DLL文件解密到內存中,并加載運行,解密的DLL文件只存在于內存中。
[0033]有利地,本發明提供的基于殼技術的軟件保護方法,通過使用數字簽名、MSIL代碼混淆、加密等技術,可以防止對軟件的非法拷貝,針對計算機硬件指紋授權,對于網絡版,可以防止非本服務器的客戶端訪問服務,實現了高強度的軟件保護。此外,由于使用自編的加殼技術,加密技術可以自行設計,并且可以隨時調整,而且,用戶數不多,因此,攻擊者比較少,用這種技術加密的軟件安全性也就相對更好。
[0034]以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
【權利要求】
1.一種基于殼技術的軟件保護方法,其特征在于,包括: 由編譯模塊將主程序編譯為動態鏈接庫文件; 由所述編譯模塊編寫殼程序; 由執行模塊將所述主程序的運行入口移入所述殼程序,并由所述編譯模塊將所述殼程序編譯生成可執行程序;以及 由所述執行模塊執行所述殼程序,通過所述殼程序動態加載并運行所述主程序。
2.如權利要求1所述的軟件保護方法,其特征在于,由編譯模塊將主程序編譯為動態鏈接庫文件的所述步驟之后,還包括: 由加密模塊通過計算機硬件指紋加密所述動態鏈接庫文件。
3.如權利要求2所述的軟件保護方法,其特征在于,所述計算機硬件指紋指的是計算機硬件信息中的識別號。
4.如權利要求1所述的軟件保護方法,其特征在于,由執行模塊將所述主程序的運行入口移入所述殼程序,并由所述編譯模塊將所述殼程序編譯生成可執行程序的所述步驟之后,還包括: 利用第三方工具對所述可執行程序進行混淆或加密。
5.如權利要求1所述的軟件保護方法,其特征在于,在所述殼程序加載所述動態鏈接庫文件時,將所述動態鏈接庫文件解密到內存中,并加載運行。
6.一種基于殼技術的軟件保護裝置,其特征在于,包括: 編譯模塊,用于將主程序編譯為動態鏈接庫文件,編寫殼程序,并將所述殼程序編譯生成可執行程序;以及 執行模塊,耦合于所述編譯模塊,用于將所述主程序的運行入口移入所述殼程序,執行所述殼程序,并通過所述殼程序動態加載并運行所述主程序。
7.如權利要求6所述的軟件保護裝置,其特征在于,還包括: 加密模塊,耦合于所述編譯模塊,用于通過計算機硬件指紋加密所述動態鏈接庫文件。
8.如權利要求7所述的軟件保護裝置,其特征在于,所述計算機硬件指紋指的是計算機硬件信息中的識別號。
9.如權利要求7所述的軟件保護裝置,其特征在于,所述加密模塊還用于對所述可執行程序進行混淆或加密。
10.如權利要求6所述的軟件保護裝置,其特征在于,所述執行模塊還用于在所述殼程序加載所述動態鏈接庫文件時,將所述動態鏈接庫文件解密到內存中,并加載運行。
【文檔編號】G06F21/12GK104504310SQ201510019423
【公開日】2015年4月8日 申請日期:2015年1月15日 優先權日:2015年1月15日
【發明者】陳靜風 申請人:深圳市東信時代信息技術有限公司