[发明专利]一种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等提出的上述算法,现有研究的重点和成果是如何在虚方法的指令代码中通过修改操作数和编码操作码来嵌入和提取水印信息。对于虚方法中的程序代码如何产生,尚未有很好的研究。一般需要根据所嵌入的水印信息,由专业人员通过人工的方法来编写,不具有通用性,也不方便,使得该算法的实际应用受到限制。本发明提出一种通过计算机程序在虚方法中自动生成用于嵌入水印信息的指令代码的方法和技术。基于本发明,用户只要给出需要嵌入的水印信息,系统会在虚方法中自动生成相应的指令代码,无需人工介入。这样就可以设计开发出方便实用的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.vipzhuanli.com/pat/books/201410467066.1/2.html,转载请声明来源钻瓜专利网。