java代码混淆工具ProGuard混淆插件

java代码混淆工具ProGuard混淆插件

介绍

ProGuard是一个纯java编写的混淆工具,有客户端跟jar包两种使用方式。可以将程序打包为jar,然后用工具进行混淆,也可以在maven中导入ProGuard的插件,对代码进行混淆。

大家都知道
java代码可以反编译,因此有时候要保护自己的知识产权还真得费点心思,一般来说有三个思路:

  • 1、将class文件加密,这个是最安全的,但也费事儿,因为要重写classloader来解密class文件;
  • 2、使用花指令,使得class文件不能反编译(利用反编译工具漏洞);安全性一般,还是有花指令破解器;
  • 3、代码混淆,提高代码阅读成本;简单易操作,一般采用这种或者与其它方式结合;

maven项目引入插件

pom.xml

<plugins>
<!-- ProGuard混淆插件--><plugin><groupId>com.github.wvengen</groupId><artifactId>proguard-maven-plugin</artifactId><version>2.0.14</version><executions><execution><!-- 混淆时刻,这里是打包的时候混淆--><phase>package</phase><goals><!-- 使用插件的什么功能,当然是混淆--><goal>proguard</goal></goals></execution></executions><configuration><!-- 是否将生成的PG文件安装部署--><attach>true</attach><!-- 是否混淆--><obfuscate>true</obfuscate><!-- 指定生成文件分类 --><attachArtifactClassifier>pg</attachArtifactClassifier><options><!-- JDK目标版本1.8--><option>-target 1.8</option><!-- 不做收缩(删除注释、未被引用代码)--><option>-dontshrink</option><!-- 不做优化(变更代码实现逻辑)--><option>-dontoptimize</option><!-- 不路过非公用类文件及成员--><option>-dontskipnonpubliclibraryclasses</option><option>-dontskipnonpubliclibraryclassmembers</option><!--不用大小写混合类名机制--><option>-dontusemixedcaseclassnames</option><!-- 优化时允许访问并修改有修饰符的类和类的成员 --><option>-allowaccessmodification</option><!-- 确定统一的混淆类的成员名称来增加混淆--><option>-useuniqueclassmembernames</option><!-- 不混淆所有包名--><option>-keeppackagenames</option><option>-keepdirectories</option><!-- 需要保持的属性:异常,注解等--><option>-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod</option><option>-keep class javax.annotation.**</option><option>-dontwarn javax.crypto.**</option><option>-keep class javax.crypto.**</option></options><outjar>${project.build.finalName}-pg.jar</outjar><libs><lib>${java.home}/lib/rt.jar</lib></libs><!-- 对什么东西进行加载,这里仅有classes成功,毕竟你也不可能对配置文件及JSP混淆吧--><injar>classes</injar><!-- 输出目录--><outputDirectory>${project.build.directory}</outputDirectory></configuration></plugin>
</plugins>

打包生成混淆jar包

mvn clean install -Dmaven.test.skip=true

在这里插入图片描述

在target目录会生成classes-pg.jar就是混淆后的jar包

部署

可以把jar包名修改为和spring包命名类似, 或者直接在spring源代码里加限制代码,然后打包

参考链接:
https://blog.csdn.net/sinat_35100573/article/details/51833294
https://www.cnblogs.com/nevermorewang/p/8041548.html
https://blog.csdn.net/sqzhao/article/details/50627920
https://blog.csdn.net/wltj920/article/details/48970869
https://blog.csdn.net/qysh123/article/details/17786163

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/705279.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pencils Protocol 获合作伙伴 Galxe 投资,加快了生态进展

近日&#xff0c;Scroll 生态项目 Penpad 将品牌进一步升级为 Pencils Protocol&#xff0c;全新升级后其不仅对 LaunchPad 平台进行了功能上的升级&#xff0c;同时其也进一步引入了 Staking、Vault 以及 Shop 等玩法&#xff0c;这也让 Pencils Protocol 的叙事方向不再仅限于…

小程序(四)

十四、分包加载 &#xff08;一&#xff09;普通分包与主包 随着项目越来越大&#xff0c;为了用户更好的体验&#xff0c;小程序引用了分包技术&#xff0c;分包技术将tabBar页面及一些全局使用的静态资源&#xff0c;放到主包中&#xff0c;开发者可以根据需要添加分包&…

php+vant van-uploader手机拍照 上传

设置capture”user”&#xff0c;则只会调起摄像头&#xff1b; 不设置capture“user”&#xff0c;则会弹窗让选择相册或拍照。 HTML: <link rel"stylesheet" href"/vue/vant.css"><van-field name"uploader" label"照片"&…

关于 vs2019 c++20 规范里的一个全局函数 _Test_callable

&#xff08;1&#xff09;看名思议&#xff0c;觉得这个函数可以测试其形参是否是可以被调用的函数&#xff0c;或可调用对象&#xff1f; 不&#xff0c;这个名字不科学。有误导&#xff0c;故特别列出。看下其源码&#xff08;该函数位于 头文件&#xff09;&#xff1a; 辅…

使用可接受gitlab参数的插件配置webhook

jenkins配置 安装Generic Webhook Trigger 配置远程触发令牌 勾选Print post content和Print contributed variables用于打印值 配置gitlab 选择新增webhook 配置webhook http://JENKINS_URL/generic-webhook-trigger/invoke,将JENKINS_URL修改成自己的jenkins地址 先保存…

基于springboot+vue+Mysql的校园闲置物品交易网站

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

AWS简介

AWS AWS&#xff0c;全称为Amazon Web Services&#xff0c;是亚马逊公司旗下的云计算服务平台&#xff0c;自2006年起向全球用户提供广泛而深入的云计算服务。AWS是全球最全面、应用最广泛的云平台之一&#xff0c;它从全球的数据中心提供超过200项功能齐全的服务&#xff0c…

分布式系统的一致性与共识算法(三)

顺序一致性(Sequential Consistency) ZooKeeper 一种说法是ZooKeeper是最终一致性&#xff0c;因为由于多副本、以及保证大多数成功的ZAB协议&#xff0c;当一个客户端进程写入一个新值&#xff0c;另外一个客户端进程不能保证马上就能读到这个值&#xff0c;但是能保证最终能…

mysql的explain

explain可以用于select&#xff0c;delete&#xff0c;insert&#xff0c;update的statement。 当explain用于statement时&#xff0c;mysql将会给出其优化器&#xff08;optimizer&#xff09;的执行计划。 通过explain字段生成执行计划表。下面来解析这个执行计划表的每一列…

【以规划为导向的自动驾驶】Planning-oriented Autonomous Driving

ABSTRACT 研究背景&#xff1a; 现代自动驾驶系统是顺序化地排列多个任务模块, 近期的主流方法&#xff1a; ①为单个任务部署独立模型 ②设计具有分离式头部的多任务(multi-task)范式。 但是&#xff0c;这些方法会累积误差或任务间协同不足而不利于自动驾驶。 作者认为重…

战网国际服注册教程 暴雪战网国际服账号注册一站式教程分享

战网国际版&#xff0c;也即Battle.net环球版&#xff0c;是由暴雪娱乐操刀的全球化游戏交流枢纽&#xff0c;它突破地理限制&#xff0c;拥抱全世界的游戏玩家。与仅限特定地区的版本不同&#xff0c;国际版为玩家开辟了无障碍通道&#xff0c;让他们得以自由探索暴雪庞大游戏…

免费体验GPT-4o这5大功能,非常好用!

这几天&#xff0c;OpenAI发布了新的GPT版本&#xff0c;GPT-4o&#xff0c;比GPT4更加智能也更快。 据说&#xff0c;GPT-4o在文本、推理和编码智能方面实现了GPT-4 Turbo级别的性能&#xff0c;在多语言、文本、音频和视觉功能方面甚至超过了市面上所有同类产品。 有几个亮点…