JAVA 类文保护分析论文 .docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JAVA 类文保护分析论文

JAVA 类文件保护分析论文   【摘要】:由于Java语言面向对象和编译成中间代码执行的特点,其在抗反编译和反盗版方面显得尤其脆弱。本文针对Java软件的特点,运用多种方法,综合设计出一个保护Java类文件的方法。   关键词:Class;加密;密钥;代码混淆   1.引言   目前,Java编程语言的应用在全世界范围正流行,它广泛的应用在Internet的数据库、多媒体、CGI及动态网页的制作方面。1999年在美国对Java程序员的需求量首次超过C++。经调查统计,Java语言应用在软件领域占领着举足轻重的地位,为人类科技文明进步奠定了重要基础。然而,Java语言却存在着巨大的安全隐患。Java是一种跨平台的、解释型语言。第一,Java源代码编译中间“字节码”存储于Class文件中。Class文件是一种字节码形式的中间代码,该字节码中包括了很多源代码的信息,例如变量名、方法名等;第二,由于跨平台的需求,Java的指令集比较简单通用,较容易得出程序的语义信息;第三,Java编译器将每一个类编译成一个单独的文件,这也简化了反编译的工作;第四,Java的Class文件中,仍然保留所有的方法和变量的名称,可以通过这些名称来访问变量和方法,这些符号往往带有许多语义信息。因此,Java程序的这些特点,很容易对不经过处理的Java程序进行反编译。目前,市场上有许多优秀的Java反编译工具,能够反编译出非常接近源代码的程序。所以,对开发人员来说,如何保护Java程序就变成一个非常重要的任务。   类文件的安全威胁   的编译   开发Java应用程序首先是使用编辑工具编写Java的源代码,然后使用编译器编译成虚拟机可执行的Class类文件。编译后生成的类文件是一种有格式的中间代码——字节码文件,不能在本地机器上独立运行,只能在Java虚拟机里解释执行。Java编译器不对变量和方法等符号的引用转换为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号的引用信息保留在类文件中,由解释器在运行过程中创建内存布局,然后再通过查找表来确定一个变量或方法所在的地址[1]。   从Java类文件的结构及其实际数据可知Java类文件保留了源代码文件的大部分信息,如所有的变量和方法等信息。正是由于这个特点,只要在各个平台上实现了各自的Java虚拟机,不用修改Java应用程序的源代码就可以在各个平台上运行,真正做到跨平台的特性,这也是Java能够迅速流行起来的重要原因。   的反编译   反编译是一个将目标代码转换成源代码的过程[2]。而目标代码是一种用语言表示的代码,这种语言能通过实机或虚拟机直接执行。从本质上说,他需要根据小规模、低层次的行为来推断大规模、高层次的行为。因此,反编译目标代码并不容易。   在JDK中,有一个反编译器javap[3],利用该工具可以对Java类文件进行反编译。经过   该工具反汇编后得到的结果并不是源代码,但是使用javap进行反编译的Java类文件可以得到成员变量、方法、行号以及局部变量名等信息[4]。在javap工具的基础上,一些反编译工具如Mocha,WinDis,DjDecompiler等工具可反编译出和源代码几乎一摸一样的代码。   3.常用Java类文件保护方法   由于Java字节码的抽象级别较高,容易被反编译,所以就有了多种防止Java字节码被反编译的方法。   隔离Java程序:最简单的方法就是让用户不能够访问到JavaClass程序,这种方法是最根本的方法,具体实现有多种方式。   代码混淆:这种方法对Class文件进行重新组织和处理,使得处理前后的代码具有相同的语义,被混淆后的代码很难被反编译。   转换成本地代码:本地代码难以被反编译,开发人员可以选择将整个应用程序或关键模块转换成本地代码。如果仅仅转换关键模块,在使用这些模块时,需调用JNI技术,这将牺   牲Java的跨平台特性   加密Class文件:为了防止Class文件被直接反编译,可以将一些关键的Class文件加密   [5],例如对密钥、加密算法、注册码、序列号管理相关的类等。在使用这些被加密的类之前先解密,然后再将其装载到JVM中。   对比上述几种方法,都存在其自身的优缺点。隔离Java程序只能适合网络环境的客户机/服务器结构或者分布式的环境,对单机运行的程序就无法隔离,而且Java程序需要使用安全机制保护服务器开放接口的使用,服务器的安全成了整个系统安全的焦点。代码本地化,对于不同的平台,需要维护不同版本的本地代码,这将加重软件支持和维护的工作。对Class文件进行加密,在使用时再进行解密,同时将关键加密代码部分进行代码混淆,这样经过双重处理后,代码的安全性[6]提高了很多,该方法也是本文研究的重点。   文件加密技术   

文档评论(0)

haowendangqw + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档