java软件保护技术研究.pdf

收藏

编号:20181110221216999143    类型:共享资源    大小:140.54KB    格式:PDF    上传时间:2019-02-16
  
2
金币
关 键 词:
保护Java软件 Java软件 软件保护技术 JAVA 技术保护Java 技术保护 Java 程序 保护Java Java PDF Java软件保护技术研究 java 保护技术 保护软件 Java软件保护
资源描述:
科技信息 计算机与网络 Java软件保护技市酮奔 湖南城市学院计算机科学系 祝青 [摘要]Iava软件的保护方法是大家一直关注的问题之一。本文详细介绍了本地化技术、远程接口访问技术、软件数字水印技术以 及混淆技术等四种传统的Java软件保护方法,并分析了这些方法各自存在的问题。希望本文的研究能够#Java软件保护技术领域 的研究起到抛砖引玉的作用。 【关键词.1ava保护技术研究 一、本地化技术 Java本地化,是指通过将Java应用程序编译成本地应用程序,如 Windows操作系统下扩展名为.ex的应用程序,来达到增加反编译的难 度,实现软件保护的方法实现步骤如下:首先编写Java源代码,然后通 过Java编译器将Java源代码编译成Java类文件,最后使用本地编译工 具将Java类文件编译成二进制的本机应用程序。 Java本地化技术产生的是二进制格式的可执行文件与在虚拟机中 执行的Java应用程序相比,可以产生更快的执行速度和更小的内存占 用。由于程序已经从类文件被编译成二进制的可执行文件,原本类文件 由于自身结构特性所带来的安全隐患也就随之消失了,反编译不再成 为Java软件的安全威胁,在这种情况下,Java软件的安全性达了到与传 统的用C/C++等语言开发的软件一样的强度。目前许多本地编译工具 被开发出来,并获得广泛的使用。 本地化技术虽然能够很好的保护Java类文件,使其达到与传统的 用C/C++等语台开发的软件一样的安全强度,但也存在以下几个问题: 1、失去了“一次编译,到处运行”的跨平台性 本地编译得到的是二进制格式的可执行文件,它依赖于具体的运 行平台,只能在具体编译过程执行的同一种平台上运行,因而失去了跨 平台的特性。 2、无法应用于B/S结构的网络应用软件 本地化技术依赖于具体的运行平台,生成的是一个可执行程序,这 种解决方案可以较好的保护单机应用软件。但却无法应用于网络应用 软件,因为服务器端程序运行在Java应用服务器上,因此本地化的解决 方案明显不支持这种类型的应用程序。 3、错误定位困难 Java软件本地化处理是一个相对较新的课题,诊断分析的理论基 础薄弱,要准确的诊断和定位本机编译产生的Java应用程序中出现的 问题十分困难,尤其当Java类文件版本中没有发生该错误的时候。 二、远程接口访问技术 分布式结构是现代软件开发中广泛采用的一种体系结构,通常将 软件分为客户端和服务器端,核心的功能模块和业务流程都部署在服 务器端为客户端提供服务,客户端负责采集数据、提交服务请求和与服 务器端通信,这种体系结构的采用可以提高系统的可移植性和互操作 性,大幅度降低软件的开发成本。现在通过接口提供服务的标准和协议 越来越多。把实现核心功能的类文件放在远程服务端,这种模式就是现 在流行的Java服务器应用程序,也称为web应用程序。 web应用程序模式的发展不但适应了各种计算环境的需要,从另 外一个角度看也实现了源代码的隔离,起到了保护Java软件的作用。可 以通过远程接口访问达到软件保护的目的,防止黑客或者其他软件分 析人员通过反编译核心算法所在的类文件得到源代码。所谓远程接口 访问是指将应用和实现相分离,将软件的核心算法等关键部分部署在 远程的应用服务器上,用户通过访问应用服务器的接口提交服务请求 和获得服务,在整个过程中用户无法访问到关键部分的类文件。远程接 口访问技术使得用户无法获得类文件,也就从根本上防止了对类文件 进行反编译获得源代码的可能性。 远程接口访问技术能有效地保护关键的Java类文件,从而达到软 件保护的目的。但是这种方式也存在着明显的局限性和很大的安全隐 患: 1、远程接口访问技术只适用于B/S结构或者分布式结构的软件,而 对单机运行的应用软件则不适用。 2、远程接口访问技术实际上是将保护的焦点从关键的类文件转移 到了应用服务器上。在这种体系结构下,制定完善的安全机制来保护端 口至关重要,因为如果应用服务器被攻破,那么所有部署在服务器上的 服务模块和类文件就完全暴露在攻击者面前,后果不堪设想。 三、软件数字水印技术 软件数字水印是众多数字水印的一种,它的主要保护对象是计算 机代码,包括源代码和机器码。使得它们免于或者减少遭受非法复制和 非法篡改的危险。由于计算机代码是不能容忍任何错误的,因此一些传 统的利用可允许错误范围内修改计算机程序从而嵌入水印的方法将不 适用于计算机软件。 1、软件数字水印的用途 (1)作为侵犯知识产权的证据 在一般情况下,发生剽窃事件时,由于难以举证,常常难以判断真 正的原创者。引入软件数字水印技术后,在程序中嵌入代表作者身份的 软件数字水印,那么在对被怀疑的程序进行验证时,就可以用水印解码 的方法从程序中得到真正的作者的信息。 (2)发现被剽窃的程序 要确定一款软件中是否包含剽窃的程序模块是一件很困难的事 情,因为通常相对于程序整体而言,剽窃的程序模块只是很小的一部 分,非法程序和原程序的具体规范可能会有很大的不同。利用数字水印 可以有效的找到被盗的程序模块,对于在互联网上流通的程序,有一种 爬虫技术,它在互联网上到处活动,搜寻特定的目标,可以利用爬虫找 到包含特定数字水印的程序,从而发现被盗模块。 (3)追踪非法拷贝的源头 由于计算机软件极其容易被无差异复制,不法分子在获得授权版 本后可以对其进行非法复制和分发以获得经济利益。因此,有必要登记 授权用户信息以追查非法拷贝的源头。仅仅登记授权用户信息是不够 的,因为这无法将特定的授权版本和具体的授权用户联系起来。为了达 到追踪目的,必须提供这种联系,而且这种联系必须是隐秘的,否则很 容易给破坏。数字水印正好可以满足这些要求,它通过在把授权用户信 息嵌入到授权版本来建立这种内在联系。当发现市场上流通的盗版软 件时,可以检测水印信息从而获得授权用户信息。对参与盗版的授权用 户进行惩罚,从而减少这种行为的发生。 2、软件数字水印的不足 软件数字水印技术也存在一些不足,比如:需要插入额外的代码, 需要仔细地编写哑函数及其调用,否则容易被有经验的反编译者识破, 从而擦除水印。另外,静态软件数字水印算法的健壮性相对较差,而动 态软件数字水印算法虽然具有很好的健壮性,但是它只能保护整个应 用程序,而不能保护某一部分特定的代码,同时,动态软件数字水印的 检测方式令它的某些应用受到限制。目前的水印算法在提供可靠的版 权证明方面或多或少都有一些的尚不完善的地方,因此寻找能提供完 全可靠版权保护的软件数字水印算法成为一个重要的课题。 四、混淆技术 1、混淆的定义 代码混淆技术是目前比较成熟和流行的一种软件保护技术。代码 混淆技术是对类文件进行代码语义、程序流程和逻辑结构的重新组织, 代码混淆并不能增加反编译的难度,使用反编译器仍然可以对混淆后 的类文件进行反编译,得到代码,但此时的代码是经混淆后的代码,可 读性已经大大降低,难以从代码中发现源代码的编写思路和关键算法, 从而达到保护软件的目的。典型的混淆技术包括去除所有的调试信息, 使用机器生成的名称重命名包、类和方法等。目前的混淆程序提供的功 能则更强大,通过重构现有的逻辑和插入不执行的伪代码来改变控制 流程。混淆的前提是变换不会破坏字节码的有效性,也不会改变对外所 表现的功能。混淆的可行与反编译的可行是出于同一原因:Java字节码 是标准化的,而且是很容易归档的。混淆程序加载Java类文件,分析其 格式然后根据所支持的特性进行变换。当所有的变换完成后,字节码就 保存成一个新的类文件。新文件具有不同的内部结构,而其行为与原始 文件一致。 2、混淆技术存在的问题 从安全性角度看,混淆确实可以在很大程度上破坏反编译代码的 可读性,增加逆向工程的难度,有效地保护软件,但并不是绝对的。实践 证明,除非使用控制流程的混淆,打乱程序的流程,否则阅读和处理混 淆的代码并不是很困难的事情。即便使用了流程控制,具备重量级的调 试程序和足够经验的攻击者仍然可能破解软件。 参考文献 [1]申茜.Java软件面临的风险及其保护.电脑知识与技术(学术交 流),2007/23 [2]胡燕京.软件保护研究及其在Java软件保护中的应用.现代电子 技术.2007/15 [3]甘晟科Java软件的加密方法研究与应用.计算机与现代化,20 05 102 万方数据
展开阅读全文
  皮皮文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:java软件保护技术研究.pdf
链接地址:http://www.ppdoc.com/p-10914123.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2008-2018 皮皮文库网站版权所有
经营许可证编号:京ICP备12026657号-3 

收起
展开