国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

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

jf_ro2CN3Fa ? 來源:芋道源碼 ? 作者:芋道源碼 ? 2022-11-23 10:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


編譯

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

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

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

  • 項目地址: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 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址: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會對代碼進行優化壓縮,他會刪除從未使用的類或者類成員變量等
-dontshrink
#是否關閉字節碼級別的優化,如果不開啟則設置如下配置
-dontoptimize
#混淆時不生成大小寫混合的類名,默認是可以大小寫混合
-dontusemixedcaseclassnames
#對于類成員的命名的混淆采取唯一策略
-useuniqueclassmembernames
#混淆時不生成大小寫混合的類名,默認是可以大小寫混合
-dontusemixedcaseclassnames
#混淆類名之后,對使用Class.forName('className')之類的地方進行相應替代
-adaptclassstrings

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

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

然后可以看到jar的生成:

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

看看效果:

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

好了,該篇就到這。



審核編輯 :李倩


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

    關注

    20

    文章

    3001

    瀏覽量

    116422
  • 代碼
    +關注

    關注

    30

    文章

    4968

    瀏覽量

    73960
  • spring
    +關注

    關注

    0

    文章

    341

    瀏覽量

    15935
  • 編譯
    +關注

    關注

    0

    文章

    694

    瀏覽量

    35158
  • SpringBoot
    +關注

    關注

    0

    文章

    177

    瀏覽量

    684

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    新手學單片機,主要是,學什么好?

    如果你是新手想學單片機,主要是為了,那我真心推薦從microbit入手。第,玩起來特別簡單。不用費勁裝什么專用軟件,直接打開瀏覽器就能用MakeCode在線編程,連下載都省了。
    的頭像 發表于 01-21 16:37 ?639次閱讀
    新手學單片機,主要是<b class='flag-5'>玩</b>,學什么好?

    分析嵌入式軟件代碼的漏洞-代碼注入

    。 鑒于此,開發人員應該了解其他避免代碼注入的方法。 應該遵循的兩個黃金規則以防止代碼注入漏洞: 1.如果你可以避免的話,盡量不要將數據像代碼
    發表于 12-22 12:53

    CW32L083的內置獨立校準的RTC這般怎么

    CW32L083的內置獨立校準的RTC這般怎么
    發表于 12-09 07:04

    HarmonyOS應用代碼混淆技術方案

    代碼混淆技術可以增加代碼的復雜性和模糊性,從而提高攻擊者分析代碼的難度。
    的頭像 發表于 11-21 16:17 ?5604次閱讀
    HarmonyOS應用<b class='flag-5'>代碼</b><b class='flag-5'>混淆</b>技術方案

    編譯器如何指定代碼的地址段?

    我在官方 gcc 的基礎上添加了自定義指令,目前可以正確編譯出匯編代碼,但是我該如何指定匯編結果的地址段,讓生成的代碼符合蜂鳥的地址分配呢?求助大神幫助指導下,thx~
    發表于 11-10 06:06

    ArkGuard混淆工具使用指南

    ArkGuard是款源碼混淆工具,提供基礎混淆功能。當軟件發布后,其代碼很容易被他人獲取分析,通過閱讀清晰的變量名、函數名,攻擊者或競爭者可以非常輕松地理解
    的頭像 發表于 09-28 16:05 ?926次閱讀
    ArkGuard<b class='flag-5'>混淆</b>工具使用指南

    東莞AI潮簽下億元出海大單,加速國產芯片走向普及

    生產基地,全國近85%的潮產自這里,全球四分之的動漫衍生品由東莞制造。據不完全統計,2024年東莞全市潮規上限上企業160家,實現營收近238億元,同比增長19%。今年上半年,東莞有進出口實績的玩具企業達940家,出口玩具
    的頭像 發表于 09-08 07:07 ?4303次閱讀

    移遠通信 × 奧飛娛樂,共同打造AI潮2.0時代

    上海——當童年記憶中的“喜羊羊”不再只是屏幕里的動畫角色,而是化身能傾聽心聲、感知情緒的智能伙伴,場由AI技術驅動的潮革命已悄然來臨。 ? 作為全球領先的物聯網整體解決方案供應商,移遠通信憑借
    發表于 06-30 17:31 ?1562次閱讀
    移遠通信 × 奧飛娛樂,共同打造AI潮<b class='flag-5'>玩</b>2.0時代

    移遠通信 × 奧飛娛樂,共同打造AI潮2.0時代

    當童年記憶中的“喜羊羊”不再只是屏幕里的動畫角色,而是化身能傾聽心聲、感知情緒的智能伙伴,場由AI技術驅動的潮革命已悄然來臨。作為全球領先的物聯網整體解決方案供應商,移遠通信憑借前瞻性的AI
    的頭像 發表于 06-30 17:02 ?1043次閱讀
    移遠通信 × 奧飛娛樂,共同打造AI潮<b class='flag-5'>玩</b>2.0時代

    【經驗分享】玩轉FPGA串口通信:從“幻覺調試”到代碼解析

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

    信息化時代國產主板如何防止信息泄露

    在數字化時代,每份機密的泄露都可能成為我們的致命傷,尤其是如今網絡如此發達的5G時代,如何防止網絡信息泄密,已經成為每個人必須直面的問題。
    的頭像 發表于 05-21 09:32 ?462次閱讀

    OLED代碼分享

    OLED代碼
    發表于 04-29 17:04 ?1次下載

    云里物里電子價簽顯示方案助力潮行業數字化升級

    從“小眾收藏”到“大眾消費”,潮行業正在粉絲藏品轉變為大眾消費品。據市場調研數據顯示,中國潮市場規模已突破千億元,消費者對產品信息更新速度、互動體驗及個性化展示的需求日益增長。
    的頭像 發表于 04-23 09:10 ?733次閱讀

    【JVM開發者必看】IntelliJ IDEA代碼分析實踐指南:實時糾錯、冗余檢測、自動修復等

    【IntelliJ IDEA中的代碼分析技巧】靜態代碼分析是指在不實際運行代碼的情況下掃描代碼以發現潛在問題。IntelliJ IDEA中的檢查可以在您
    的頭像 發表于 03-13 10:34 ?1066次閱讀
    【JVM開發者必看】IntelliJ IDEA<b class='flag-5'>代碼</b>分析實踐指南:實時糾錯、冗余檢測、自動修復等

    cubeide的代碼怎么編譯到內部+外部FLASH里面去?

    我有個項目,準備使用GUI和AI,準備使用STM32U5,但是編譯出來的代碼很多,STM32U5的內部FLASH不夠用,準備使用OSPI擴展外部FLASH。但是遇到個問題,我不知道
    發表于 03-07 07:48