城市直播房产教育博客汽车
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

基于Maven的SpringBoot工程中,如何进行Java

9月17日 多上心投稿
  前言
  代码混淆,是将计算机程序的代码转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。执行代码混淆的程序被称作代码混淆器。为什么要做代码混淆?
  代码混淆的主要目的是为了保护源代码,阻止反向工程。反向工程会带来许多问题,诸如知识产权泄露,程序弱点暴露易受攻击等。使用即时编译技术的语言,如Java、C所编写的程序更容易受到反向工程的威胁。但是代码混淆并不能真正阻止反向工程,只能增大其难度。因此,对于对安全性要求很高的场合,仅仅使用代码混淆并不能保证源代码的安全。还可以通过代码虚拟化,代码加密,压缩等多种方式来提高代码的安全性。代码混淆有哪些方式?将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,甚至改写成这样的符号,使得阅读的人无法根据名字猜测其用途。重写代码中的部分逻辑,将其变成功能上等价但是更难理解的形式。比如将for循环改写成while循环,将循环改写成递归,精简中间变量,等等。打乱代码的格式。比如删除空格,将多行代码挤到一行中,或者将一行代码断成多行等等。如何对JAVA代码进行混淆?在生成class文件的过程中(即编译过程),通过修改编译器的代码生成过程,对编译器生成的中间代码进行混淆,最后生成class文件。典型的是jocky,但目前最新的jocky为1。0。3版本,不支持jdk1。6。在生成class文件后,对class文件进行混淆。典型的是proguard、retroguard。但由于并不是所有的class文件都需要混淆,所以将面临复杂的配置工作(配置哪些类需要混淆,哪些类需要混淆),并且程序一旦修改,配置工作又要重新进行。如何使用proguard进行代码混淆?
  主要使用proguardmavenplugin插件对springboot代码进行混淆。插件配置如下:buildplugins!ProGuard混淆插件plugingroupIdcom。github。wvengengroupIdproguardmavenpluginartifactIdversion2。3。1versionexecutionsexecution!混淆时刻,这里是打包的时候混淆phasepackagephasegoals!使用插件的混淆功能goalproguardgoalgoalsexecutionexecutionsconfigurationproguardVersion6。2。2proguardVersion!对classes进行加载injarclassesinjaroutjar{project。build。finalName}。jaroutjar!输出目录outputDirectory{project。build。directory}outputDirectorylibslib{java。home}librt。jarliblib{java。home}libjce。jarliblibs!混淆obfuscatetrueobfuscate!是否将生成的PG文件安装部署!trueattach!指定生成文件分类!pgattachArtifactClassifier!保留pom文件等falseaddMavenDescriptor!外部配置文件proguardInclude。。proguard。cfgproguardIncludeconfigurationdependenciesdependencygroupIdnet。sf。proguardgroupIdproguardbaseartifactIdversion6。2。2versiondependencydependenciespluginpluginsbuild
  其中外部配置文件proguard。cfg内容如下:keep{Modifier}{classspecification}防止类和成员被移除或者被重命名keepclassmembers{modifier}{classspecification}防止成员被移除或者被重命名keepclasseswithmembers{classspecification}防止拥有该成员的类和成员被移除或者被重命名keepnames{classspecification}防止成员被重命名keepclasseswithmembernames{classspecification}防止拥有该成员的类和成员被重命名keepclasseswithmembersbasedirectorydirectoryname在配置文件中出现的相对路径均是相对于该路径忽略所有警告,否则有警告的时候混淆会停止ignorewarningsJDK目标版本1。8target1。8不做收缩(删除注释、未被引用代码)dontshrink不做优化(变更代码实现逻辑)dontoptimize不路过非公用类文件及成员dontskipnonpubliclibraryclassesdontskipnonpubliclibraryclassmembers优化时允许访问并修改有修饰符的类和类的成员allowaccessmodification确定统一的混淆类的成员名称来增加混淆useuniqueclassmembernames不混淆所有包名,本人测试混淆后WEB项目问题实在太多,毕竟Spring配置中有大量固定写法的包名keeppackagenames不混淆局部变量名keepparameternames不混淆所有特殊的类LocalVariableTable,keepattributesExceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,Annotation,Synthetic,EnclosingMethod不混淆包下的所有类名keepclassweg。base。{}keepclassweg。service。{}keepclassweg。dao。{}keepclassweg。util。{}不混淆quartz包下的所有类名,且类中的方法也不混淆keepclassweg。quartz。{}不混淆model包中的所有类以及类的属性及方法,实体包,混淆了会导致ORM框架及前端无法识别keepclassweg。model。{;}不混淆所有的setget方法,毕竟项目中使用的部分第三方框架(例如Shiro)会用到大量的setget映射keepclassmemberspublicclass{voidset();get();}保持类protected不被混淆keeppublicclass{}
  配置完成后执行maven命令:cleanpackageDskipTests
  执行上述代码后,在target目录下会生成3个文件:classes。jar混淆后的classes文件,里面包含完整的项目结构proguardmap。txt混淆内容的映射proguardseed。txt参与混淆的类踩坑指南(1)报错如下:Error:Youhavetospecifykeepoptionsifyouwanttowriteoutkeptelementswithprintseeds。
  解决方式:根据需求配置keep要保留的元素(2)。。proguard。cfg配置文件未生效
  解决方式:是因为路径写的有问题,此路径是相对于编译后的target文件的路径,如果是maven多模块,这些配置又写在父模块的目录下,重点来了,想要混淆子模块的代码,那么这个路径就是相对于子模块的target文件夹的路径(3)打包之后不知道混淆成功了没,或者混淆配置生效了没,查看这个jar包里的代码又很麻烦
  解决方式:outjar配置一个目录即可。如果要上传私服,打包之后却有两个包,混淆的那个包无法直接上传私服,那么outjar配置的jar包名称和{project。build。finalName}一致,即可覆盖。然后一键轻松上传私服。!class混淆后输出的jar包或文件夹outjar{project。build。finalName}。jaroutjar
搜索 投诉 评论 转载

苹果macOS12。4开发者预览版Beta2发布出品搜狐科技编辑邵涵怡4月20日消息,苹果今日向Mac电脑用户推送了macOS12。4开发者预览版Beta2更新(内部版本号:21F5058e),本次更新距离上次发……新能源车泡沫或将破裂!特斯拉跌3000亿美元,Rivian接全球新能源退潮的苗头已经开始出现,在特斯拉跌去了3000亿美元之后,那个号称特斯拉杀手的Rivian,市值距离最高点也接近腰斩,并且没有止跌的趋势。那么,究竟是Rivia……Python元组的用法元组是一系列数据的顺序组合元组是顺序组合,有正序、反序,不能修改。元组采用小括号(),并使用逗号隔开即可。元组(tuple)是有序的数据,通过下标去获取。元组可以是字符串、字典……若是不差钱,2022年买手机建议一步到位,内行人一般会选择这相信大家买手机时,都希望自己能购买到符合自己心意的好机型,但是面对智能手机市场上琳琅满目的产品,往往都会陷入到纠结当中,不知道购买哪一款手机合适。畅玩君建议大家,2022年买手……基于Maven的SpringBoot工程中,如何进行Java前言代码混淆,是将计算机程序的代码转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。执行代码混淆的程序被……国际科技传播研究院揭牌以科技人文交流促民心相知相通中国青年报客户端讯(中青报中青网记者邱晨辉)日前,中国科协与中国日报社在北京签署战略合作协议,双方将共建国际科技传播研究院,在加强国际科技传播研究、开展科技人文交流、形成平台矩……华为之星!华为MateBook14s评测摄像头回归传统,90哈喽,您好!我是原呵呵,点点关注吧,更多精彩内容等着您华为笔记本电脑在2016年之前推出的华为MateBook。电脑盖子上有一个共同的设计,就是华为花瓣,而现在华为改变了……2021年全球单品手机销量前十国产手机只有小米一家上榜目前各大手机厂商的新机发布不断,手机市场竞争一如既往的激烈,尤其是国产手机厂商们,不断推出各个价位的手机,表现的非常强势。不过,虽然国产手机厂商的动作很大,但在全球手机市场中,……还不快来!新生代农民工都爱看阿里P9大佬手写SpringBo什么是springboot?SpringBoot是Spring发展到一定程度的一个产物,但并不是Spring的替代品,SpringBoot是为了让程序员更好地使用Spri……realme官宣首批搭载骁龙778G芯片,新机或于5月24日近日,高通正式发布了骁龙778G芯片,采用6nm工艺制程,配备1颗2。4GHz主频A78大核心3颗2。2GHz主频A78核心4颗1。9Hz主频A55小核心。而作为高通最新发布的……波兰留学参考波兰人诚实吗这个问题很难回答,但是社会学研究人员通过另一种方式间接做出了结论。在最近的一项社会实验中,一组由经济学家和社会学家在全球40个不同的国家植入了大约17,000个丢失的钱包……数字人民币试点迎来第三次扩围,催生哪些新的投资机会?数字人民币有序扩大试点范围,在原有基础上增加津,重庆,广州市,福州市和厦门市,浙江省承办亚运会的六个城市,作为试点地区,北京和张家口在冬奥会场景试点结束后,转为试点地区。……
花呗原额度24700,后来被降到1000,大家有相同的吗?唐EV2022款续航增加至730公里6座更舒适内饰更豪华剩下不到2个月,刘强东曾称京东5年内超阿里,能实现吗?想买个蓝牙无线耳机,求条友们推荐下品牌型号,价位500元左右新能源汽车养护小知识计算机教育家谭浩强希望AI普及造福社会AI赋能智能搜索,龚俊AI数字人首度亮相百度世界2021相关法规陆续出台汽车数据安全红线不断强化前端的成神之路,你知道多少?新零售时代来临,经销商该怎样选择合作的厂家品牌?苹果秋季发布会举办前泄露的图片确认了iPhone13产品名称现在做智能家居怎么推广?
桑葚一般怎么吃桑葚怎么吃最好河马能打过犀牛吗和犀牛谁厉害荐书穷人为钱工作,富人让钱为自己工作美之家黄金今日价格有关人生感悟的经典励志语录华为Mate50X年底发布,昆仑玻璃7英寸大屏5500mAh黑洞与中子星对抗,谁会赢?美元对人民币今日现钞价心脏病的年轻女性,怀孕需要注意的事秋季女生流行发型清新时尚超百搭辉煌中国腾飞年三高人群吃什么蔬菜好想不到居然是这个蔬菜

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁