在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

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


編譯

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

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

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

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

反編譯

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

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

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

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

怎么做?

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

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

混淆

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

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

先看一張效果示例圖 :

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

開搞

正文

先看一下我們混淆一個項目代碼,要做啥?

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

一共就兩步

第一步, 在項目路徑下,新增一份文件 proguard.cfg :

proguard.cfg

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

#對異常、注解信息予以保留
-keepattributesExceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
#此選項將保存接口中的所有原始名稱(不混淆)-->
-keepnamesinterface**{*;}
#此選項將保存所有軟件包中的所有原始接口文件(不進行混淆)
#-keepinterface*extends*{*;}
#保留參數(shù)名,因為控制器,或者Mybatis等接口的參數(shù)如果混淆會導致無法接受參數(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[]);
}

注意點:

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

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

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

build標簽里面改動加入一下配置

<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>

注意點:

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

然后可以看到:

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

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

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

然后可以看到jar的生成:

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

看看效果:

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

好了,該篇就到這。



審核編輯 :李倩


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

    關注

    20

    文章

    2987

    瀏覽量

    107297
  • 代碼
    +關注

    關注

    30

    文章

    4891

    瀏覽量

    70367
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14936
  • 編譯
    +關注

    關注

    0

    文章

    676

    瀏覽量

    33830
  • SpringBoot
    +關注

    關注

    0

    文章

    175

    瀏覽量

    336

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    【經(jīng)驗分享】玩轉(zhuǎn)FPGA串口通信:從“幻覺調(diào)試”到代碼解析

    FPGA開發(fā),思路先行!FPGA板子,讀代碼是基本功!尤其對從C語言轉(zhuǎn)戰(zhàn)FPGA的“寶貝們”來說,適應流水線(pipeline)編程可能需要點時間。上篇點燈代碼解讀了基礎,而如果能親手寫出串口通訊
    的頭像 發(fā)表于 06-05 08:05 ?187次閱讀
    【經(jīng)驗分享】玩轉(zhuǎn)FPGA串口通信:從“幻覺調(diào)試”到<b class='flag-5'>代碼</b>解析

    美移動AI解決方案再拓展:全新AI卷發(fā)分析,將AI發(fā)質(zhì)檢測技術推向新高度

    體驗。 上海2025年2月13日?/美通社/ -- 全球領先的增強現(xiàn)實(AR)和人工智能(AI)美妝科技領導者——美移動(紐交所代碼:PERF)宣布推出AI卷發(fā)分析解決方案。作為美移動全面的AI發(fā)質(zhì)分析套件的最新成員,該套件
    的頭像 發(fā)表于 02-13 16:42 ?286次閱讀

    代碼加密、源代碼防泄漏c/c++與git服務器開發(fā)環(huán)境

    代碼加密對于很多研發(fā)性單位來說是至關重要的,當然每家企業(yè)的業(yè)務需求不同所用的開發(fā)環(huán)境及開發(fā)語言也不盡相同,今天主要來講下c++及git開發(fā)環(huán)境的源代碼防泄密保護方案。企業(yè)源代碼泄密
    的頭像 發(fā)表于 02-12 15:26 ?481次閱讀
    源<b class='flag-5'>代碼</b>加密、源<b class='flag-5'>代碼</b>防泄漏c/c++與git服務器開發(fā)環(huán)境

    15行代碼引發(fā)1800多行編譯錯誤:問題排查挑戰(zhàn)

    寫了 15 行代碼,編譯報錯竟然高達 1800 多行,這種奔潰的瞬間應該有很多同學遇到過。 代碼分為兩塊,個頭文件,個源文件。 test
    的頭像 發(fā)表于 02-12 11:10 ?380次閱讀

    分析C語言代碼結(jié)構(gòu)的設計問題

    來分析個C語言代碼結(jié)構(gòu)的設計問題。 這段代碼,使用了兩次malloc,分別給 p1 和 p2 申請了內(nèi)存。用完后,內(nèi)存釋放,防止內(nèi)存泄漏。 大家覺得,這樣的
    的頭像 發(fā)表于 02-11 09:31 ?334次閱讀

    什么樣的代碼會被編譯器優(yōu)化

    現(xiàn)在的編譯器有多智能,可能你辛辛苦苦寫的代碼,在編譯器看來就是幾句廢話,直接被刪除掉。
    的頭像 發(fā)表于 01-16 16:38 ?533次閱讀

    EE-147:調(diào)整TigerSHARC DSP編譯器的C源代碼

    電子發(fā)燒友網(wǎng)站提供《EE-147:調(diào)整TigerSHARC DSP編譯器的C源代碼.pdf》資料免費下載
    發(fā)表于 01-15 16:11 ?0次下載
    EE-147:調(diào)整TigerSHARC DSP<b class='flag-5'>編譯</b>器的C源<b class='flag-5'>代碼</b>

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

    電子發(fā)燒友網(wǎng)站提供《EE-149: 調(diào)試Blackfin處理器編譯C源代碼.pdf》資料免費下載
    發(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)境搭建 終于會用HAL框架了,環(huán)境搭建成了!

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

    蘋果下代Mac mini代碼泄露:五端口設計成焦點

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

    java反編譯能拿到源碼嗎

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

    java反編譯代碼可以修改么

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

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

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

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

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

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

    Linux驅(qū)動程序的編譯方法主要包括兩種: 與內(nèi)核編譯編譯成獨立的內(nèi)核模塊 。以下是對這兩種方法的介紹: 、與內(nèi)核
    的頭像 發(fā)表于 08-30 14:46 ?1174次閱讀
    主站蜘蛛池模板: 五月激情啪啪网 | 性夜影院爽黄e爽在线观看 羞羞色院91精品网站 | 国产日本三级 | 成人精品亚洲人成在线 | 中文字幕卡二和卡三的视频 | 亚洲a毛片 | 色婷婷久| 天天爱综合网 | 69久久夜色精品国产69小说 | 18女人毛片水真多免费 | 香蕉视频在线免费播放 | 美女全黄网站免费观看 | 天天干天天曰天天操 | 高h污快穿文汁水四溅 | 天天干夜夜添 | 日本电影在线观看黄 | 美日韩免费视频 | 特黄特黄| 在线观看网址你懂得 | 在线观看国产精美视频 | 三级黄色免费 | 欧美猛操 | 国产超爽人人爽人人做 | 欧美成人26uuu欧美毛片 | 俺也操| 美女淫 | 黄频网 | 久久久久久夜精品精品免费 | 黄色免费网站视频 | 色噜噜狠狠色综合中文字幕 | 特级中国aaa毛片 | 国产在线精品美女观看 | 久草资源网站 | 国产一级特黄在线播放 | 欧美黄色免费看 | 亚洲国产精品综合久久久 | www一区| 日本亚洲免费 | 在线观看免费视频 | 美女黄频| 在线免费观看h视频 |