- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Java编译器Maven混淆插件设计与实现
基于Java编译器Maven混淆插件设计与实现
摘要:Java编程语言被大量的工程项目使用,对Java源代码进行保护,防止其被窃取和篡改是非常有必要的。该文以OpenJDK和Oracle JDK的编译器Javac为基础,以编译器插件的形式设计和实现了一个作用于Java源代码的混淆器。该混淆器通过修改由编译器提供的抽象语法树和实现访问者模式达到混淆源代码的目的。该文介绍了名称变换、包修改和数组下标同态计算三种混淆方法。同时,该混淆器被包装成Maven插件,以方便实际项目的使用。
关键词:Java编译器;Maven插件;混淆
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)10-0065-03
Abstract: The Java programming language is used by many engineering projects and it is necessary to protect the Java source code against theft and tampering. Based on compiler Javac of OpenJDK and Oracle JDK, this paper designs and implements an obfuscator that acts on Java source code in the form of compiler plug-in. The obfuscator achieves the purpose of obfuscating the source code by modifying the abstract syntax tree provided by the compiler and implementing the visitor pattern. This article introduces the three obfuscation methods of name conversion, package modification, and array index homomorphic calculation. Meanwhile, the obfuscator is packaged as a Maven plugin to facilitate the use of actual projects.
Key words: java compiler; maven plugin; obfuscate
在所有的软件中,以Java语言编写的程序正在日益成为盗版问题的重灾区。Java语言是当前软件编写最常用的编程语言,它有着优于其他大多数编程语言的可移植性与平台无关性,从而使Java语言越来越被大多数企业接受来研发产品。Java语言在以下两个行业里起着核心作用:1)Android?件行业。Android手机操作系统使用由Google公司使用Java语言开发的手机端OS,所有Android手机APP必须使用Java语言开发;2)互联网行业。Java语言有着极其优秀的可移植性,同时易于学习,成为许多互联网大公司开发的首选。这些公司使用Java语言后,常常会开发可以提供给其他人使用的工具,反过来更进一步地促进了Java语言本身的发展。现在大部分互联网框架都是使用Java实现的。为了实现可移植性,Java语言使用中间代码发布。这种特性,导致了Java语言所编写的软件比起其他软件更容易被破解,从而严重威胁开发者的知识产权及使用者的软件安全。
Maven是当前十分常用的Java项目管理与发布框架,有必要开发一个能够对源代码进行混淆[1-2]的Maven插件。
1 混淆插件的设计
1.1 Maven插件开发
Java语言在执行代码时,会先由编译器将源代码编译成字节码,然后由虚拟机解释执行字节码。把一个项目下所有源代码、资源、配置等文件编译、打包成字节码的过程称作项目构建。如果项目比较简单,我们可以借助IDE甚至直接使用编译器来构建项目。在实践中,Java项目一般会比较复杂,比如多个项目之间有依赖关系、需要导入第三方的库、有特殊的发布需求等。
对于复杂项目的构建,一般需要使用项目构建工具:
1)Ant是最早出现的项目构建工具,使用脚本来实现配置,其中脚本文件使用XML格式编写。但是XML文件是层次型的结构,不是很适合过程型的脚步,当项目比较大的时候,Ant文件就会非常复杂。
2)Maven具有非常强大的功能,是当下Java项目比较流行使用的。Maven也使用XML文件作为配置文件,该配置文件名称是pom.xml。和Ant不同的是,M
您可能关注的文档
最近下载
- 津津有味·读经典Level3《金银岛》译文和答案.docx
- SHT3503-2017石油化工建设工程项目交工技术文件规定.pdf VIP
- 九年级下学期班主任工作总结_九年级下学期的班主任工作总结范文.docx VIP
- 九年级下学期班主任工作计划--班主任工作计划.docx VIP
- 九年级班主任上学期工作计划 九年级上学期班主任学期工作计划(通用6篇).docx VIP
- 九年级上学期班主任工作总结.docx VIP
- 八年级下学期班主任工作总结-班主任工作总结.doc VIP
- 七年级上《第2章整式的加减》测试题及答案(数学试卷新课标人教版七年级上单元试题).doc VIP
- 八年级下学期班主任工作计划-班主任工作计划.doc VIP
- 班主任上学期工作计划:八年级上学期班主任工作计划.doc VIP
原创力文档


文档评论(0)