论文部分内容阅读
近年来,随着Android智能设备及Android应用程序的流行,Android应用版权侵犯问题频频发生,不仅严重危害到了应用开发者的利益,也给用户的手机安全带来了巨大威胁。作为数字水印技术的重要分支之一,软件水印技术通过在程序中嵌入与软件版权及身份认证相关的信息,并在发生侵权行为时将这些信息提取出来以证明软件的版权归属,从而解决版权纠纷问题并保护版权所有者的利益,在软件防盗版和版权信息证明的问题中起到了重要作用。静态软件水印在操作成本、性能过载及数据嵌入率方面有一定的优势,具有一定的研究价值和使用价值。目前有关Android应用程序静态软件水印的研究还比较有限,已有的水印方案主要以可执行文件Dex作为水印载体,但由于Dex自身的文件结构紧凑,易导致水印的数据嵌入量受限,从而影响水印信息的完整性和可靠性,此外,目前使用的水印嵌入点选择方式多为机器随机选择,但机器无法判断出嵌入水印的代码段在整个程序中的重要性,从而对鲁棒性造成了一定的影响。针对以上问题,本文综合软件水印技术及Android应用特性,提出了一种面向Android应用的静态软件水印方案,本文的主要工作如下:1.对Android应用的文件结构和APK文件的生成过程及反编译技术进行研究,通过研究发现,由于Android应用的可执行文件Dex结构紧凑、冗余空间有限,易导致不能嵌入足够的水印信息。针对这一问题,选择JAR文件作为水印载体,并在此基础上对软件水印算法进行了研究和选择。2.结合软件水印技术和Android应用程序的特性,提出了基于JAR文件的Android应用的静态软件水印关键技术,使用不透明谓词算法,通过修改JAR文件中Java字节码的方式,间接向APK文件嵌入水印。为了提高隐蔽性,在嵌入水印前对水印值进行分割处理;为了加强鲁棒性,对传统的水印嵌入点选择方式进行优化,选择水印嵌入点时,在对Android应用程序具有重要作用的系统组件调用函数的上下文处,优先选取所需的水印嵌入点。3.以JAR文件为载体,设计并实现了一个面向Android应用的静态软件水印系统。该系统能够对软件水印进行嵌入和提取,并能以日志的形式记录嵌入和提取模块的运行信息,从而对系统的稳定性进行分析。通过实验仿真和性能分析,可以得出本文设计的方案对Android静态水印的数据嵌入率有一定的提升,且具有良好的鲁棒性及较低的性能负载。