发明名称 源码和目标码联合嵌入的软件水印方法
摘要 本发明属于软件保护领域,是将数字水印的技术思想应用于软件保护领域而产生的一种可对软件的版权实施保护的技术方案。该发明针对Windows系统中的PE文件格式而设计,充分利用软件本身可执行的特点,将水印的提取器嵌入在软件当中,采用源码和目标码联合嵌入的策略,将软件的版权信息,用户的指纹信息嵌入到软件当中,为软件提供版权申明的功能,一旦发生盗版可以追查盗版源。该技术方案通过引入反逆向工程技术,以抵抗水印的抗逆向工程攻击能力;通过引入混沌系统,把水印信息散列编码到整个代码当中,以保护全部代码。
申请公布号 CN101477610A 申请公布日期 2009.07.08
申请号 CN200810188310.5 申请日期 2008.12.25
申请人 中国人民解放军信息工程大学 发明人 芦斌;郑俊杰;刘粉林;孙怡峰;葛辛;王唯
分类号 G06F21/22(2006.01)I;G06N7/08(2006.01)I 主分类号 G06F21/22(2006.01)I
代理机构 代理人
主权项 1、一种源码和目标码联合嵌入的软件水印方法,将混沌系统、输入监控模块、水印解码模块、反逆向工程模块、水印信息嵌入到软件当中,其特征在于,包括以下步骤:a). 混沌系统以给定的密钥K1,迭代产生混沌序列,并列用该序列对水印信息W1进行编码,得到编码后的水印信息W2,使其更适合于嵌入到程序当中,记W2的长度为N0字节;b). 在用户配置信息的控制下,模块生成器生成混沌系统模块、水印解码模块、反逆向工程模块,将这三个模块的长度分别记为N1,N2,N3字节;c). 所述模块生成器利用密钥K2生成输入监控模块,该监控模块中具有K2的相关信息,可以判断用户的输入是否为密钥K2,将该模块的长度记为N4字节;d). 对于待嵌入水印信息的程序所给定的程序源码P1,将其送入冗余嵌入器,冗余嵌入器在程序源码中加入5块冗余代码,确保这5块冗余代码在编译后的目标码中的长度分别为N0,N1,N2,N3,N4字节,并且做好识别标记,确保从目标码中可以准确找到这5块冗余空间,记嵌入冗余空间的源代码为P2;e). 将P2送入到编译器,经过编译器的编译,可得到目标码O1,该目标码中具有5块冗余代码,且5块冗余代码的长度分别为N0,N1,N2,N3,N4,分别称这5块冗余代码为第0,1,2,3,4块冗余代码;f). 利用混沌替换,将混沌系统模块、水印解码模块、反逆向工程模块、输入监控模块嵌入到目标码O1的非冗余代码中,并将嵌入后需要保存的信息保存到第1,2,3,4块冗余代码,即将第1,2,3,4块冗余代码覆盖;g). 利用混沌系统生成的混沌序列,将编码后的水印信息W2,利用混沌散列嵌入到除第0,1,2,3,4冗余代码和混沌系统模块、水印解码模块、反逆向工程模块、输入监控模块的嵌入位置以外的所有代码部分,并将嵌入水印后需要保存的信息保存到第0块冗余代码,即将第0块冗余代码覆盖;h). 修改执行文件的头部信息,使可执行代码的开始执行位置为输入监控模块,此时得到的目标码O2即为嵌入水印后的目标码。
地址 450002河南省郑州市金水区俭学街1001信箱