[發明專利]一種Java軟件水印虛方法中指令代碼的生成方法有效
| 申請號: | 201410467066.1 | 申請日: | 2014-09-12 |
| 公開(公告)號: | CN104200139B | 公開(公告)日: | 2017-11-24 |
| 發明(設計)人: | 陳建平;李奎;施佺;馬海英;朱浩;王進;文萬志 | 申請(專利權)人: | 南通大學 |
| 主分類號: | G06F21/16 | 分類號: | G06F21/16 |
| 代理公司: | 南京匯盛專利商標事務所(普通合伙)32238 | 代理人: | 吳靜安 |
| 地址: | 226019 江*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 java 軟件 水印 方法 指令 代碼 生成 | ||
技術領域
本發明涉及軟件水印,尤其涉及一種Java軟件水印虛方法中指令代碼的生成方法。
背景技術
軟件產業近年來迅猛發展,成為每年具有數千億產值的重大產業。與此同時,軟件產品的非法復制和盜用問題也變得非常嚴重,受到業內外廣泛關注。軟件水印是近年來出現的保護軟件產品知識產權的一項技術,它在不影響軟件功能的前提下在軟件作品中嵌入版權保護信息或身份認證信息(即水印),當程序遭到非法復制或盜用時,可以通過提取這些信息來證明軟件作品的所有權。
目前,Java語言得到廣泛應用,用Java語言開發的軟件占有很大的比重。Java語言具有跨平臺的可移植性,使用便利,同時也帶來程序容易被復制和盜用的問題。研究和開發用于Java語言程序版權保護的軟件水印技術具有十分重要的現實意義和應用價值。在現有的Java軟件水印技術中,由Akito Monden等人最先提出的基于虛方法和類文件字節碼的軟件水印算法具有較好的實用性和可實現性,可用于保護Java類文件。該算法的基本思想是,在需要保護的Java程序中植入永不執行的方法,稱為虛方法。由于虛方法實際不會執行,我們可以根據需要編寫虛方法中的程序代碼。然后在虛方法對應的字節碼中,對指令的操作數進行修改或者對指令的操作碼進行編碼,以此來嵌入水印信息。
對Akito Monden等提出的上述算法,現有研究的重點和成果是如何在虛方法的指令代碼中通過修改操作數和編碼操作碼來嵌入和提取水印信息。對于虛方法中的程序代碼如何產生,尚未有很好的研究。一般需要根據所嵌入的水印信息,由專業人員通過人工的方法來編寫,不具有通用性,也不方便,使得該算法的實際應用受到限制。本發明提出一種通過計算機程序在虛方法中自動生成用于嵌入水印信息的指令代碼的方法和技術?;诒景l明,用戶只要給出需要嵌入的水印信息,系統會在虛方法中自動生成相應的指令代碼,無需人工介入。這樣就可以設計開發出方便實用的Java軟件水印應用系統。
發明內容
本發明目的在于克服上述現有技術之不足,提供一種Java軟件水印虛方法中指令代碼的自動生成方法。該方法利用Apache Web服務軟件提供的用于操作Java類文件的BCEL類庫對給定的Java類文件進行操作。具體有以下技術方案實現:
所述Java軟件水印虛方法中指令代碼的生成方法,基于BCEL類庫,具體包括如下步驟:
1)通過BCEL類庫載入待嵌入指令的Java類文件,對所述類文件進行解析,轉化成符合BCEL處理要求的Java類文件對象;
2)從所述Java類文件對象中獲取類文件的參數信息,所述參數信息包括類中的方法,再從獲取的方法中找到并取出虛方法;
3)根據獲取的虛方法與參數信息創建一個新的虛方法,用于取代原先的虛方法;
4)產生用于嵌入水印信息的指令代碼,將它們添加到所述新虛方法的指令集合中;
5)將所述新虛方法套入所述Java類文件中。
所述Java軟件水印虛方法中指令代碼的生成方法的進一步設計在于,所述參數信息還包括所述Java類文件的類文件名與常量池。
所述Java軟件水印虛方法中指令代碼的生成方法的進一步設計在于,所述用于嵌入水印信息的指令代碼的產生包括:
修改操作數,對通過修改操作數嵌入水印信息的指令,進行配置操作數,組合成完整的指令,將所述指令代碼添加到類中新虛方法的指令集合中;
編碼操作碼,生成操作碼編碼碼本,根據需嵌入的編碼,選擇相應的操作碼,配置操作數,組合成完整的指令,將所述指令代碼添加到類中新虛方法的指令集合中。
所述Java軟件水印虛方法中指令代碼的生成方法的進一步設計在于,所述修改操作數的過程可以根據嵌入水印信息的大小,通過循環語句實現與嵌入水印信息的大小對應數量的指令。
所述Java軟件水印虛方法中指令代碼的生成方法的進一步設計在于,所述修改操作數的過程具體包括如下步驟:
A)利用隨機函數生成用于嵌入水印信息的指令所需的操作數;
B)將操作碼與操作數組合成指令,存放于一臨時集合中;
C)將所述臨時集合中的指令復制到類中所述新虛方法的指令集合中。
所述Java軟件水印虛方法中指令代碼的生成方法的進一步設計在于,所述編碼操作碼的過程具體包括如下步驟:
Ⅰ)通過映射生成碼本,所述碼本中的每一編碼與一條指令操作碼成一一映射關系;
Ⅱ)根據需要嵌入的編碼,從所述碼本中找到對應的指令操作碼;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于南通大學,未經南通大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410467066.1/2.html,轉載請聲明來源鉆瓜專利網。





