[發明專利]軟件保護方法和裝置在審
| 申請號: | 201710473369.8 | 申請日: | 2017-06-21 |
| 公開(公告)號: | CN107292131A | 公開(公告)日: | 2017-10-24 |
| 發明(設計)人: | 孫吉平;周建輝 | 申請(專利權)人: | 北京深思數盾科技股份有限公司 |
| 主分類號: | G06F21/12 | 分類號: | G06F21/12;G06F21/14 |
| 代理公司: | 北京德琦知識產權代理有限公司11018 | 代理人: | 孫清然,王琦 |
| 地址: | 100193 北京市海淀區*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 軟件 保護 方法 裝置 | ||
技術領域
本發明涉及計算機應用技術,特別是涉及一種軟件保護方法和裝置。
背景技術
.NET代碼即IL代碼,由.NET運行時進行解釋執行,由.NET編譯器將源代碼編譯為IL代碼。通過現有工具可自動反編譯IL代碼并還原為源代碼形式。基于上述原因,破解者通常能夠還原軟件的核心算法,或通過修改代碼等達到破解軟件的目的。
目前,對.NET軟件進行保護的方法有以下幾種:
第一種是通過對.NET符號名稱進行混淆,到達反編譯后難以閱讀的目的。由于這種方法不能對代碼邏輯進行處理,因此,可以通過對算法的分析來破解軟件。
第二種是對代碼邏輯進行混淆。由于目前混淆的程度還比較低,算法邏輯依然可以閱讀,無法抵御破解者攻擊。
第三種是對.NET軟件進行壓縮、加密,軟件執行前將其解壓、解密再執行.NET代碼。在這種保護方式下,可以通過轉存得到原始.NET代碼。
由此可見,上述現有的.NET軟件保護方法,無法有效確保軟件的安全性。
發明內容
有鑒于此,本發明的主要目的在于提供一種軟件保護方法和裝置,可以提高軟件的安全性。
為了達到上述目的,本發明提出的技術方案為:
一種軟件保護方法,包括:
a、根據.NET代碼,生成相應的.NET數據結構,從所述.NET數據結構中抽取待保護方法代碼;
b、將所述待保護的方法代碼轉換為虛擬化代碼;
c、在抽取所述待保護方法代碼的位置處添加用于調用x86/x64虛擬機的指令代碼,所述x86/x64虛擬機用于執行所述虛擬化代碼。
一種軟件保護裝置,包括:
抽取單元,用于根據.NET代碼,生成相應的.NET數據結構,從所述.NET數據結構中抽取待保護方法代碼;
轉換單元,用于將所述待保護的方法代碼轉換為虛擬化代碼;
替換單元,用于在抽取所述待保護方法代碼的位置處添加用于調用x86/x64虛擬機的指令代碼,所述x86/x64虛擬機用于執行所述虛擬化代碼。
綜上所述,本發明提出的軟件保護方法和裝置,通過對.NET代碼中需要保護方法的代碼進行處理,將需要保護方法的.NET代碼轉換為虛擬化代碼,然后將需要保護方法的.NET代碼替換為調用x86/x64虛擬機的指令代碼。這樣,經過上述處理的.NET代碼運行后,當執行到要保護方法時,就會在x86/x64虛擬機中執行相應的虛擬化代碼,在此期間被保護的方法代碼將無法被反編譯和調試,因此可以提高.NET程序的安全性,防止惡意篡改,對軟件版權起到了保護作用。
附圖說明
圖1為本發明實施例的方法流程示意圖;
圖2為經過本發明實施例處理后的軟件程序運行過程示意圖;
圖3為本發明實施例的裝置結構示意圖。
具體實施方式
為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖及具體實施例對本發明作進一步地詳細描述。
本發明的核心思想是:將x86/x64本地代碼的虛擬機保護技術移植到.NET保護,即通過將.NET代碼轉換為x86/x64虛擬機能夠執行的代碼,且.NET運行時調用x86/x64虛擬機執行算法邏輯,以達到無法有效還原.NET代碼的目的,從而可以提高軟件的安全性。
圖1為本發明實施例的方法流程示意圖,如圖1所示,該實施例實現的軟件保護方法主要包括:
步驟101、根據.NET代碼,生成相應的.NET數據結構,從所述.NET數據結構中抽取待保護方法代碼。
較佳地,所述根據所述.NET代碼,生成相應的.NET數據結構包括:
獲取所述.NET代碼的.NET元數據;
解析所述.NET元數據,根據所包含的方法函數體,生成相應的.NET數據結構。
較佳地,所述生成相應的.NET數據結構之后還包括:
將所述x86/x64虛擬機添加至所述.NET數據結構的全局數組中;
將內存加載方法增加到所述.NET數據結構中,所述內存加載方法用于獲取虛擬機入口地址并加載所述x86/x64虛擬機;
如果所述.NET數據結構中不存在.cctor方法,則將.cctor方法添加至所述.NET數據結構中,其中,所述.cctor方法中包括第二call代碼和Marshal庫;
所述第二call代碼用于調用所述內存加載方法;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京深思數盾科技股份有限公司,未經北京深思數盾科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710473369.8/2.html,轉載請聲明來源鉆瓜專利網。





