色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SpringBoot玩一玩代碼混淆,防止反編譯代碼泄露

jf_ro2CN3Fa ? 來源:芋道源碼 ? 作者:芋道源碼 ? 2022-11-23 10:14 ? 次閱讀


編譯

簡(jiǎn)單就是把代碼跑一哈,然后我們的代碼 .java文件 就被編譯成了 .class 文件

a35b132a-6ad3-11ed-8abf-dac502259ad0.png

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

反編譯

就是針對(duì)編譯生成的 jar/war 包 里面的 .class 文件 逆向還原回來,可以看到你的代碼寫的啥。

比較常用的反編譯工具 JD-GUI ,直接把編譯好的jar丟進(jìn)去,大部分都能反編譯看到源碼:

a39ec7dc-6ad3-11ed-8abf-dac502259ad0.png

那如果不想給別人反編譯看自己寫的代碼呢?

怎么做?

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

混淆

該篇玩的代碼混淆 ,是其中一種手段。

我給你看,但你反編譯看到的不是真正的代碼。

先看一張效果示例圖 :

a3c97f68-6ad3-11ed-8abf-dac502259ad0.png

開搞

正文

先看一下我們混淆一個(gè)項(xiàng)目代碼,要做啥?

a3ebd982-6ad3-11ed-8abf-dac502259ad0.png

一共就兩步

第一步, 在項(xiàng)目路徑下,新增一份文件 proguard.cfg :

proguard.cfg

#指定Java的版本
-target1.8
#proguard會(huì)對(duì)代碼進(jìn)行優(yōu)化壓縮,他會(huì)刪除從未使用的類或者類成員變量等
-dontshrink
#是否關(guān)閉字節(jié)碼級(jí)別的優(yōu)化,如果不開啟則設(shè)置如下配置
-dontoptimize
#混淆時(shí)不生成大小寫混合的類名,默認(rèn)是可以大小寫混合
-dontusemixedcaseclassnames
#對(duì)于類成員的命名的混淆采取唯一策略
-useuniqueclassmembernames
#混淆時(shí)不生成大小寫混合的類名,默認(rèn)是可以大小寫混合
-dontusemixedcaseclassnames
#混淆類名之后,對(duì)使用Class.forName('className')之類的地方進(jìn)行相應(yīng)替代
-adaptclassstrings

#對(duì)異常、注解信息予以保留
-keepattributesExceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
#此選項(xiàng)將保存接口中的所有原始名稱(不混淆)-->
-keepnamesinterface**{*;}
#此選項(xiàng)將保存所有軟件包中的所有原始接口文件(不進(jìn)行混淆)
#-keepinterface*extends*{*;}
#保留參數(shù)名,因?yàn)?a  target="_blank">控制器,或者M(jìn)ybatis等接口的參數(shù)如果混淆會(huì)導(dǎo)致無(wú)法接受參數(shù),xml文件找不到參數(shù)
-keepparameternames
#保留枚舉成員及方法
-keepclassmembersenum*{*;}
#不混淆所有類,保存原始定義的注釋-
-keepclassmembersclass*{
@org.springframework.context.annotation.Bean*;
@org.springframework.beans.factory.annotation.Autowired*;
@org.springframework.beans.factory.annotation.Value*;
@org.springframework.stereotype.Service*;
@org.springframework.stereotype.Component*;
}

#忽略warn消息
-ignorewarnings
#忽略note消息
-dontnote
#打印配置信息
-printconfiguration
-keeppublicclasscom.example.myproguarddemo.MyproguarddemoApplication{
publicstaticvoidmain(java.lang.String[]);
}

注意點(diǎn):

a4092028-6ad3-11ed-8abf-dac502259ad0.png

其余的看注釋,可以配置哪些類不參與混淆,哪些枚舉保留,哪些方法名不混淆等等。

第二步,在pom文件上 加入proguard 混淆插件 :

build標(biāo)簽里面改動(dòng)加入一下配置

<build>
<plugins>
<plugin>
<groupId>com.github.wvengengroupId>
<artifactId>proguard-maven-pluginartifactId>
<version>2.6.0version>
<executions>

<execution>
<phase>packagephase>
<goals>
<goal>proguardgoal>
goals>
execution>
executions>
<configuration>

<injar>${project.build.finalName}.jarinjar>

<outjar>${project.build.finalName}.jaroutjar>

<obfuscate>trueobfuscate>

<proguardInclude>${project.basedir}/proguard.cfgproguardInclude>

<libs>
<lib>${java.home}/lib/rt.jarlib>
<lib>${java.home}/lib/jce.jarlib>
<lib>${java.home}/lib/jsse.jarlib>
libs>

<inLibsFilter>!META-INF/**,!META-INF/versions/9/**.classinLibsFilter>

<outputDirectory>${project.basedir}/targetoutputDirectory>

<options>

options>
configuration>
plugin>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<executions>
<execution>
<goals>
<goal>repackagegoal>
goals>
<configuration>
<mainClass>com.example.myproguarddemo.MyproguarddemoApplicationmainClass>
configuration>
execution>
executions>
plugin>
plugins>
build>

注意點(diǎn):

a426238a-6ad3-11ed-8abf-dac502259ad0.pnga443bbd4-6ad3-11ed-8abf-dac502259ad0.png

然后可以看到:

a45c2b24-6ad3-11ed-8abf-dac502259ad0.png

然后點(diǎn)擊package,正常執(zhí)行編譯打包流程就可以 :

a473ce1e-6ad3-11ed-8abf-dac502259ad0.png

然后可以看到j(luò)ar的生成:

a49a9878-6ad3-11ed-8abf-dac502259ad0.png

看看效果:

a4ba91b4-6ad3-11ed-8abf-dac502259ad0.png

好了,該篇就到這。



審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2972

    瀏覽量

    104869
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4803

    瀏覽量

    68756
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    340

    瀏覽量

    14358
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    659

    瀏覽量

    32914
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    173

    瀏覽量

    186

原文標(biāo)題:SpringBoot 玩一玩代碼混淆,防止反編譯代碼泄露

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    EE-149: 調(diào)試Blackfin處理器編譯C源代碼

    電子發(fā)燒友網(wǎng)站提供《EE-149: 調(diào)試Blackfin處理器編譯C源代碼.pdf》資料免費(fèi)下載
    發(fā)表于 01-08 14:48 ?0次下載
    EE-149: 調(diào)試Blackfin處理器<b class='flag-5'>編譯</b>C源<b class='flag-5'>代碼</b>

    【RA-Eco-RA0E1-32PIN-V1.0開發(fā)板試用】開箱+環(huán)境搭建 終于會(huì)用HAL框架了,環(huán)境搭建成了!

    【RA-Eco-RA0E1-32PIN-V1.0開發(fā)板試用】開箱+環(huán)境搭建終于會(huì)用HAL框架了,環(huán)境搭建成了! 粗心的我把RASC中設(shè)置成32腳芯片, 在KEIL中設(shè)置成了同名64腳芯片, 所以燒不進(jìn)代碼, 終于解決了問題,
    發(fā)表于 11-01 13:18

    蘋果下代Mac mini代碼泄露:五端口設(shè)計(jì)成焦點(diǎn)

    9月17日,國(guó)際媒體發(fā)布消息稱,蘋果公司在其軟件中的代碼更新中,不慎泄露了備受期待的下代Mac mini的關(guān)鍵細(xì)節(jié)。此次泄露由MacR
    的頭像 發(fā)表于 09-18 16:21 ?752次閱讀

    代碼整潔之道-大師眼中的整潔代碼是什么樣

    幾個(gè)月前寫了篇文章“如何寫出難以維護(hù)的代碼”,從中能大概了解到不好維護(hù)的代碼是什么樣,有哪些壞味道,那肯定有人會(huì)反問,難以維護(hù)的代碼見的太多了,也知道長(zhǎng)什么樣,但是對(duì)于好維護(hù)的
    的頭像 發(fā)表于 09-09 16:30 ?364次閱讀
    <b class='flag-5'>代碼</b>整潔之道-大師眼中的整潔<b class='flag-5'>代碼</b>是什么樣

    java反編譯能拿到源碼嗎

    Java反編譯種將編譯后的Java字節(jié)碼(.class文件)轉(zhuǎn)換回Java源代碼的過程。雖然反編譯可以幫助理解
    的頭像 發(fā)表于 09-02 11:03 ?1074次閱讀

    java反編譯代碼可以修改么

    Java反編譯種將編譯后的Java字節(jié)碼(.class文件)轉(zhuǎn)換回源代碼的過程。反編譯后的代碼
    的頭像 發(fā)表于 09-02 11:00 ?744次閱讀

    ida反編譯出來代碼能直接用嗎

    IDA反編譯出來的代碼通常 不能直接使用 ,這主要基于以下幾個(gè)方面的原因: 代碼的不完整性 IDA反編譯生成的
    的頭像 發(fā)表于 09-02 10:55 ?746次閱讀

    hex文件如何查看原c語(yǔ)言代碼

    直接將 .hex 文件轉(zhuǎn)換回原始的 C 語(yǔ)言代碼是不可能的,因?yàn)?.hex 文件是二進(jìn)制文件,它包含了單片機(jī)程序編譯后的機(jī)器碼,這些機(jī)器碼與原始的 C 語(yǔ)言代碼在結(jié)構(gòu)和表達(dá)上存在巨大的差異。機(jī)器碼
    的頭像 發(fā)表于 09-02 10:37 ?2519次閱讀

    《黑神話:悟空》,除了“官配”硬件還需要注意這些......

    《黑神話:悟空》,除了“官配”硬件還需要注意這些......
    的頭像 發(fā)表于 08-30 14:58 ?477次閱讀
    暢<b class='flag-5'>玩</b>《黑神話:悟空》,除了“官配”硬件還需要注意這些......

    linux驅(qū)動(dòng)程序的編譯方法是什么

    Linux驅(qū)動(dòng)程序的編譯方法主要包括兩種: 與內(nèi)核編譯編譯成獨(dú)立的內(nèi)核模塊 。以下是對(duì)這兩種方法的介紹: 、與內(nèi)核
    的頭像 發(fā)表于 08-30 14:46 ?663次閱讀

    LKT(LCS)代碼移植芯片優(yōu)勢(shì)

    所謂代碼移植就是客戶可以把自定義的程序部分關(guān)鍵代碼函數(shù)移植到加密芯片中運(yùn)行。用戶采用標(biāo)準(zhǔn)C語(yǔ)言編寫代碼,通過KEIL C編譯器,
    的頭像 發(fā)表于 08-22 10:03 ?808次閱讀

    如何用代碼在運(yùn)行的時(shí)候設(shè)置程序防止被讀出?

    如何用代碼在運(yùn)行的時(shí)候設(shè)置程序防止被讀出
    發(fā)表于 06-03 07:24

    招掌握C語(yǔ)言代碼如何變成bin文件?

    、關(guān)鍵步驟將單片機(jī)的源代碼轉(zhuǎn)換成二進(jìn)制文件(bin文件)的過程涉及幾個(gè)關(guān)鍵步驟,這些步驟是編譯過程中的標(biāo)準(zhǔn)組成部分,主要包括以下步驟:預(yù)處理、編譯、匯編、鏈接、二進(jìn)制轉(zhuǎn)換。01預(yù)處理
    的頭像 發(fā)表于 04-13 08:10 ?3332次閱讀
    <b class='flag-5'>一</b>招掌握C語(yǔ)言<b class='flag-5'>代碼</b>如何變成bin文件?

    OpenHarmony 移植:build lite 編譯構(gòu)建過程

    配置完畢產(chǎn)品解決方案、芯片開發(fā)板解決方案,就可以執(zhí)行 hb build 進(jìn)行編譯。但是產(chǎn)品解決方案代碼是如何被調(diào)用編譯的? 芯片開發(fā)板解決方案代碼是如何被調(diào)用
    的頭像 發(fā)表于 02-19 16:19 ?977次閱讀

    g代碼和m代碼表示什么功能

    G代碼和M代碼是數(shù)控機(jī)床程序中常用的兩種指令代碼,用于控制數(shù)控機(jī)床的工作動(dòng)作和運(yùn)動(dòng)方式。 G代碼是指控制機(jī)床工作動(dòng)作的指令代碼,它是
    的頭像 發(fā)表于 02-14 15:49 ?4492次閱讀
    主站蜘蛛池模板: 亚洲精品一区二区在线看片| 美女被免费喷白浆视频| 精品久久久久久电影网| 男男免费看| 性xxx免费| xx69中国| 久久精品一区二区三区资源网| 日日操日日射| 2020年国产精品午夜福利在线观看| 国产强奷糟蹋漂亮邻居在线观看| 欧美含羞草免费观看全部完| 野花视频在线观看免费| 国产69精品久久久久人妻刘玥 | 国产区免费在线观看| 欧美午夜福利主线路| 伊人久久大香线蕉综合亚洲| 国产精品免费大片| 秋霞在线观看视频一区二区三区| 真人裸交有声性动态图| 国产一区在线观看免费| 日韩一区二区三区免费体验| 97国产精品久久精品国产| 九九免费的视频| 侮辱丰满美丽的人妻| 大乳牛奶女在线观看| 嫩草视频在线观看免费| 中国少妇内射XXXX狠干| 黄色a级免费网站| 无码天堂亚洲国产AV久久| 草莓视频在线免费观看| 男人电影天堂手机| 中文字幕在线永久| 久久成人免费观看全部免费 | 亚洲成人日韩| 国产精品 中文字幕 亚洲 欧美| 青柠高清在线观看完整版| 91精品国产色综合久久| 久久无码av三级| 影888午夜理论不卡| 精品综合久久久久久8888| 亚洲 成人网|