91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐ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)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

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

反編譯

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

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

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

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

怎么做?

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

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

#對異常、注解信息予以保留
-keepattributesExceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
#此選項將保存接口中的所有原始名稱(不混淆)-->
-keepnamesinterface**{*;}
#此選項將保存所有軟件包中的所有原始接口文件(不進(jìn)行混淆)
#-keepinterface*extends*{*;}
#保留參數(shù)名,因為控制器,或者M(jìn)ybatis等接口的參數(shù)如果混淆會導(dǎo)致無法接受參數(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標(biāo)簽里面改動加入一下配置

<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

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

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

看看效果:

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

好了,該篇就到這。



審核編輯 :李倩


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

    關(guān)注

    20

    文章

    3002

    瀏覽量

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

    關(guān)注

    30

    文章

    4970

    瀏覽量

    74024
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    341

    瀏覽量

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

    關(guān)注

    0

    文章

    694

    瀏覽量

    35192
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    177

    瀏覽量

    693

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    新手學(xué)單片機(jī),主要是,學(xué)什么好?

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

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

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

    CW32L083的內(nèi)置獨立校準(zhǔn)的RTC這般怎么

    CW32L083的內(nèi)置獨立校準(zhǔn)的RTC這般怎么?
    發(fā)表于 12-09 07:04

    v6編譯v5的代碼會報錯,怎么解決?

    v6編譯v5的代碼會報錯。要想正常編譯通過,得用v6重零構(gòu)建個項目才行嗎
    發(fā)表于 12-08 06:21

    HarmonyOS應(yīng)用代碼混淆技術(shù)方案

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

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

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

    ArkGuard混淆工具使用指南

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

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

    生產(chǎn)基地,全國近85%的潮產(chǎn)自這里,全球四分之的動漫衍生品由東莞制造。據(jù)不完全統(tǒng)計,2024年東莞全市潮規(guī)上限上企業(yè)160家,實現(xiàn)營收近238億元,同比增長19%。今年上半年,東莞有進(jìn)出口實績的玩具企業(yè)達(dá)940家,出口玩具
    的頭像 發(fā)表于 09-08 07:07 ?4341次閱讀

    移遠(yuǎn)通信 × 奧飛娛樂,共同打造AI潮2.0時代

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

    移遠(yuǎn)通信 × 奧飛娛樂,共同打造AI潮2.0時代

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

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

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

    信息化時代國產(chǎn)主板如何防止信息泄露

    在數(shù)字化時代,每份機(jī)密的泄露都可能成為我們的致命傷,尤其是如今網(wǎng)絡(luò)如此發(fā)達(dá)的5G時代,如何防止網(wǎng)絡(luò)信息泄密,已經(jīng)成為每個人必須直面的問題。
    的頭像 發(fā)表于 05-21 09:32 ?482次閱讀

    OLED代碼分享

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

    云里物里電子價簽顯示方案助力潮行業(yè)數(shù)字化升級

    從“小眾收藏”到“大眾消費”,潮行業(yè)正在粉絲藏品轉(zhuǎn)變?yōu)榇蟊娤M品。據(jù)市場調(diào)研數(shù)據(jù)顯示,中國潮市場規(guī)模已突破千億元,消費者對產(chǎn)品信息更新速度、互動體驗及個性化展示的需求日益增長。
    的頭像 發(fā)表于 04-23 09:10 ?755次閱讀

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

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