精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

這什么代碼,沒法看了...

開發 前端
通過proguard來實現class內容的混淆相對比較簡單,當然還有很多其他的技術方法,比如上面說到的對class進行加密這種更安全的技術手段。

哈嘍,大家好,我是指北君。

今天和大家一起學習下java中的代碼混淆技術,后面你也可以讓你的代碼不再裸露在外了,讓人輕易窺視

代碼混淆技術

當需要閱讀jar文件的內容時,可能你會使用一些反編譯工具,比如jd-gui,但是否有遇到反編譯后的內容和想象的不一樣,但正常引用該jar又都是正常的?

開始的話

前段時間,使用了docx4j的庫來操作.docx文件進行一些復雜的操作,比如對多個docx文件進行合并,在網上找了很多的方式發現最終生成的文檔都有很多多余的內容, 導致原本幾兆的文件合并后有幾十兆,記得docx4j官網有提供商業版本的方法,準備窺探下其源碼來研究下,然而當我下載好jar后打開時,我蒙了...

圖片

簡介

我們知道,一般情況下編譯打包后的jar文件可以通過反編譯工具看到jar中的接口、類、方法都是可以被,這樣相關的代碼實現很容易被模仿借鑒,企業的核心代碼很可能被人盜用。特別是一些涉密較強或者商業性的行業軟件,當被拿到jar并反編譯后如同開源一般。那么通過對class文件進行字節碼級別的混淆加密,就能夠在一定程度防止技術被模仿或復用, 從而對java軟件起到很好的保護作用。

實現方式

  1. 對class文件進行加密,但是需要特定的Classloader在加載class時對其解密
  2. 針對class文件反編譯原理,通過花指令防止文件被反編譯
  3. 基于代碼混淆技術,對代碼中的包、類、方法等名稱進行混淆,從而提高代碼閱讀成本

示例

今天主要介紹通過第3種方法實現代碼混淆,這里主要使用了proguard工具對應的maven插件proguard-maven-plugin:

Proguard是一個Java類文件壓縮器、優化器、混淆器、預校驗器。壓縮環節會檢測以及移除沒有用到的類、字段、方法以及屬性。優化環節會分析以及優化方法的字節碼。混淆環節會用無意義的短變量去重命名類、變量、方法。這些步驟讓代碼更精簡,更高效,也更難被逆向(破解)

比如我們基于Restful開發一個用戶服務接口

  1. 可能你的項目結構會是這樣的:
packages...
├ entity
| ├ User
├ dao
| ├ UserDao
| ├ impl
| ├ UserDaoImpl
├ service
| ├ UserService
| ├ impl
| ├ UserServiceImpl
├ web
| ├ UserController

通過命令mvn package打包后,結構是這樣的:

圖片

  1. 現在引入proguard:

需要在pom.xml中build標簽中加入插件,具體配置如下:

<!-- ProGuard混淆插件-->
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.6.0</version>
<executions>
<execution>
<!-- 混淆時刻,這里是打包的時候混淆-->
<phase>package</phase>
<goals>
<!-- 使用插件的什么功能-->
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 是否將生成的PG文件安裝部署-->
<attach>true</attach>
<!-- 對什么東西進行加載,這里僅有classes成功,畢竟你也不可能對配置文件及JSP混淆吧-->
<injar>${project.build.finalName}.jar</injar>
<!--class 混淆后輸出的jar包-->
<outjar>${project.build.finalName}-pg.jar</outjar>
<!-- 是否混淆-->
<obfuscate>true</obfuscate>
<!-- 配置一個文件,通常叫做proguard.cfg,該文件主要是配置options選項,也就是說使用proguard.cfg那么options下的所有內容都可以移到proguard.cfg-->
<proguardInclude>${project.basedir}/proguard.cfg</proguardInclude>
<!-- 指定生成文件分類 -->
<attachArtifactClassifier>pg</attachArtifactClassifier>
<!-- 額外的jar包,通常是項目編譯所需要的jar -->
<libs>
<lib>${java.home}/lib/rt.jar</lib>
</libs>
<!-- 對輸入jar進行過濾比如,如下配置就是對META-INFO文件不處理。 -->
<inLibsFilter>!META-INF/**</inLibsFilter>
<!-- 這是輸出路徑配置,但是要注意這個路徑必須要包括injar標簽填寫的jar -->
<outputDirectory>${project.basedir}/target</outputDirectory>
<!--這里特別重要,此處主要是配置混淆的一些細節選項,比如哪些類不需要混淆,哪些需要混淆-->
<options>
<!-- 可以在此處寫option標簽配置,不過我上面使用了proguardInclude,故而我更喜歡在proguard.cfg中配置 -->
</options>
</configuration>
</plugin>

其中配置文件proguard.cfg如下:

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

#對異常、注解信息予以保留
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
# 此選項將保存接口中的所有原始名稱(不混淆)-->
# -keepnames interface ** { *; }
# 此選項將保存所有軟件包中的所有原始接口文件(不進行混淆)
#-keep interface * extends * { *; }
#保留參數名,因為控制器,或者Mybatis等接口的參數如果混淆會導致無法接受參數,xml文件找不到參數
-keepparameternames
# 保留枚舉成員及方法
-keepclassmembers enum * { *; }
# 不混淆所有類,保存原始定義的注釋-
-keepclassmembers class * {
@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
  1. 執行打包命令mvc package,可以看到target目錄下新增了幾個文件
  • obfuscation-pg.jar 混淆處理后的輸出jar
  • proguard_map.txt 存放混淆前后類、方法的對應關系
  • proguard_seed.txt 存放保持不變的類 可見包的名稱、類名都改成了短字母

圖片

實現技術

通過proguard來實現class內容的混淆相對比較簡單,當然還有很多其他的技術方法,比如上面說到的對class進行加密這種更安全的技術手段,感興趣的你可以繼續探究。

  • 其他技術
  • Jocky
  • retroguard
  • androidkiller
  • ClassFinal

結束語

此篇文章簡單介紹了java中的代碼混淆技術,我們可以根據具體的項目需求對編譯后的代碼進行混淆或加密處理,從而保護自己的勞動成果。開頭看到的docx4j企業級功能提供 的jar具體是怎么實現代碼保護的,目前還沒發現其具體采用了什么技術實現,后面繼續研究。

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2017-11-09 14:40:49

懸浮Tab代碼

2020-11-20 10:22:34

代碼規范設計

2021-01-04 13:33:08

黑客微軟網絡攻擊

2020-05-15 09:30:12

代碼函數語言

2015-06-05 11:23:19

前端為什么不要你

2022-05-09 14:33:20

代碼設計設計模式

2018-03-12 11:52:44

2023-10-25 14:47:08

架構設計人工智能

2023-10-18 10:42:44

WOT大會架構架構演進

2020-06-17 07:42:14

C語言編程核心

2021-11-02 06:58:53

架構線程池參數

2020-04-29 14:50:40

代碼對比工具

2023-03-09 09:14:51

ChatGPTAI

2021-11-17 16:24:23

JS 代碼函數聲明

2024-07-25 14:36:10

2025-07-16 10:39:40

2020-03-02 19:08:21

JVMJDKJRE

2020-10-14 18:53:14

Python編程語言

2020-03-05 09:42:43

JavaJava虛擬機數據庫

2021-06-30 00:14:24

JS代碼數組
點贊
收藏

51CTO技術棧公眾號

热re91久久精品国99热蜜臀| 性久久久久久久久久久久| 91精品久久久久久久久中文字幕| 超碰手机在线观看| 久久影视三级福利片| 一本色道a无线码一区v| 亚洲综合激情五月| 无码精品视频一区二区三区| 日韩av二区在线播放| www.欧美三级电影.com| 久久av一区二区三| jvid一区二区三区| 亚洲国产日韩在线一区模特| 日韩一区二区三区高清| 亚洲av无码乱码在线观看性色| 午夜亚洲伦理| 欧美另类精品xxxx孕妇| 黄免费在线观看| 亚洲图色一区二区三区| 精品视频1区2区3区| 日韩精品一区二区在线视频| 国产剧情在线观看| 成人性生交大片免费看中文| 国产精品视频在线观看| 国产污污视频在线观看| 91精品二区| 亚洲第一天堂av| 色网站在线视频| 一级黄色片大全| 欧美高清视频| 久久精品免费在线观看| 国产精品国产亚洲精品看不卡15| 在线观看中文字幕码| 国产亚洲精品自拍| 欧美激情综合亚洲一二区| 中文字幕在线观看二区| 国产真实有声精品录音| 亚洲国产精品福利| 肉丝美足丝袜一区二区三区四| 国产精品.xx视频.xxtv| 91久久奴性调教| av免费播放网址| 黄色18在线观看| 亚洲自拍偷拍麻豆| 国产小视频免费| 国产视频在线播放| 中文字幕中文字幕中文字幕亚洲无线| 欧美日韩成人一区二区三区 | 99久久精品免费看国产一区二区三区 | 久草在线免费福利资源| 99riav一区二区三区| 国产成人精品福利一区二区三区| 国产suv精品一区二区69| 黄色日韩网站视频| 成人免费看片视频| 国产福利资源在线| 国产精品一区二区不卡| 成人欧美一区二区三区视频xxx | 精品国产三级a∨在线| 日本中文在线观看| 一区视频在线播放| 中文字幕综合在线观看| h片在线观看网站| 一区二区三区欧美日韩| 97碰在线视频| 高清在线视频不卡| 欧美日韩综合视频网址| 国产男女激情视频| 五月激情久久| 欧美日韩国产精选| 91香蕉视频免费看| 北条麻妃一区二区三区在线观看 | 小毛片在线观看| 婷婷综合福利| 在线观看国产成人av片| 999精品视频在线观看播放| 欧美在线看片| 91精品国产色综合久久不卡98口| av图片在线观看| 美女性感视频久久| 亚洲综合第一页| 天天干天天插天天操| 久久久久免费观看| 伊人久久青草| 爱情岛亚洲播放路线| 色婷婷综合久久久久中文| 色国产在线视频| 97久久亚洲| 亚洲性av网站| 精品少妇久久久久久888优播| 亚洲在线网站| 91精品啪aⅴ在线观看国产| 亚洲大尺度视频| 久久久久久亚洲综合影院红桃| 一本一道久久a久久精品综合 | 18成人在线视频| 久久精品国产sm调教网站演员| 666av成人影院在线观看| 337p亚洲精品色噜噜狠狠| 奇米777第四色| 久久中文字幕av| 91极品女神在线| 国产乱码精品一区二区三区精东| 99久久久国产精品免费蜜臀| 一区二区三区国产福利| 美女的胸无遮挡在线观看| 在线成人午夜影院| 无码人妻精品一区二区三应用大全 | 久久电影tv| 91精品免费观看| 三上悠亚影音先锋| 亚洲天堂偷拍| 成人激情视频在线| 欧美中文在线| 激情成人在线视频| 51自拍视频在线观看| 欧美日韩性在线观看| 久久久最新网址| 国产精品国产一区二区三区四区 | 999这里只有精品| 国产伦精品一区二区三区在线观看| 久久一区二区精品| 欧美hdxxx| 制服.丝袜.亚洲.中文.综合| 欧美特级黄色录像| 日韩天堂av| 99re在线观看| 乱人伦中文视频在线| 在线看日韩精品电影| 黄色a一级视频| 亚洲国产日韩欧美一区二区三区| 91九色蝌蚪国产| 日本激情在线观看| 精品视频一区三区九区| 女女互磨互喷水高潮les呻吟| 国产午夜精品一区二区三区欧美 | 国产亚洲依依| 日韩欧美亚洲范冰冰与中字| 精品国产av色一区二区深夜久久| 欧美精品大片| 91在线观看免费高清完整版在线观看 | 中文字幕欧美日韩精品| 亚洲欧美另类在线视频| 久久综合成人精品亚洲另类欧美| 久久久久久久午夜| 欧美aaaaaaaa牛牛影院| 性欧美激情精品| 蜜臀av免费在线观看| 亚洲国产精品麻豆| 亚洲精品乱码久久久久久蜜桃图片| 午夜精品亚洲| 成人精品一二区| av蜜臀在线| 日韩精品中文字幕在线观看| 中文字幕第四页| 久久精品视频一区二区三区| 日本va中文字幕| 日韩成人a**站| 国产一区玩具在线观看| 操你啦视频在线| 日韩精品一区二区三区视频 | 欧美电影一区二区| 欧美三级免费看| 成人动漫一区二区在线| 两根大肉大捧一进一出好爽视频| 亚洲va久久| 国产精品一区二区三区在线播放 | 久热av在线| 欧美性猛片xxxx免费看久爱| 三上悠亚在线观看视频| 国产成人免费视| 欧美日韩在线一| 国产欧美日韩在线一区二区| 国产精品一二三在线| 黄黄的网站在线观看| 精品美女在线观看| www.国产毛片| 综合在线观看色| 91九色蝌蚪porny| 午夜在线观看免费一区| 亚欧洲精品在线视频免费观看| 久久9999免费视频| 91精品国产乱码久久久久久蜜臀 | 91日韩免费| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 亚洲第一视频网站| 中文字幕在线播出| 亚洲福利电影网| 国产在线综合视频| 国产精品一区二区久激情瑜伽 | 成人一区福利| 久久午夜a级毛片| 性xxxx18| 欧美一区三区二区| 国产成人在线观看网站| 中文字幕乱码亚洲精品一区 | 国产又黄又粗又猛又爽| 精品国产户外野外| 一区二区在线观看免费视频| 久久久久国产精品麻豆ai换脸| 福利视频999| 老鸭窝毛片一区二区三区| 影音先锋男人的网站| 无码少妇一区二区三区| 亚洲精品欧美一区二区三区| 日韩成人av电影| 久久久久久久久久久91| 米奇777四色精品人人爽| 日韩国产精品亚洲а∨天堂免| 一区二区国产欧美| 在线观看中文字幕不卡| 日韩av男人天堂| 亚洲精品视频在线观看免费| 三年中国中文观看免费播放| 99热在这里有精品免费| 一个人看的视频www| 久久精品国产精品亚洲综合| 黄色动漫在线免费看| 黄色成人在线网址| 欧洲美女和动交zoz0z| 欧美一级精品| 欧美一区二区三区在线免费观看 | 国产中文一区二区三区| 免费日韩中文字幕| 国产欧美高清| 欧美精品久久久久久久自慰| 影音先锋日韩在线| 一区二区三区四区五区精品| 久久93精品国产91久久综合| 精品视频导航| 日韩精品导航| 久久精品综合一区| 好吊妞视频这里有精品| 99久久99| 亚洲一区二区三区日本久久九| 亚洲xxxx3d| 国产精品国产三级在线观看| 91精品久久久久久综合乱菊 | 狠狠色伊人亚洲综合网站色| 4438全国亚洲精品观看视频| 91欧美视频网站| 在线日韩三级| 成人在线中文字幕| 国产精品欧美一区二区三区不卡 | 亚洲欧洲色图综合| 久久av红桃一区二区禁漫| 国产精品第四页| 国产在线观看免费视频软件| 中文字幕一区免费在线观看| 后入内射无码人妻一区| 国产精品女同互慰在线看 | 亚洲成人免费在线| 亚洲男人第一av| 色婷婷av一区二区三区软件| 中文字幕精品视频在线观看| 在线观看中文字幕不卡| 中文字幕人妻一区二区在线视频| 欧美视频中文一区二区三区在线观看| 中文天堂在线资源| 在线电影一区二区三区| 性生活免费网站| 日韩av一区二区在线| 精品美女视频在线观看免费软件| 伊人久久男人天堂| 精精国产xxxx视频在线| 欧美丰满少妇xxxxx| 2019中文字幕在线电影免费| 日本午夜精品理论片a级appf发布| 国产一区二区主播在线| 91久久国产婷婷一区二区| 国产精品欧美大片| 秋霞在线观看一区二区三区| 色无极亚洲影院| 日韩成人手机在线| 日韩一区精品视频| 中文字幕亚洲影院| 成人激情视频网站| 高清国产在线观看| 亚洲综合成人网| 无码免费一区二区三区| 欧美一区二区在线播放| 午夜激情小视频| 中文日韩在线观看| a'aaa级片在线观看| 国产成人av在线播放| 精品国产伦一区二区三区观看说明| 成人欧美一区二区三区在线观看| 国产免费播放一区二区| 免费观看黄色的网站| 99在线|亚洲一区二区| www.久久av.com| av在线不卡网| 91麻豆精品成人一区二区| 无吗不卡中文字幕| 136福利视频导航| 日韩精品中文字幕在线观看| 成人av福利| 国产成人aa精品一区在线播放| 91精品日本| 一区视频二区视频| 噜噜噜躁狠狠躁狠狠精品视频| 免费欧美一级片| 亚洲国产成人自拍| 在线观看日本视频| 日韩精品一区二区三区视频播放| 大乳在线免费观看| 97婷婷涩涩精品一区| 经典三级久久| 亚洲v国产v在线观看| 国产亚洲亚洲| 无码国产精品一区二区免费式直播 | 免费在线成人av电影| 国模吧视频一区| 天天av天天操| 国产精品久久久久久久久图文区| 九九热在线免费观看| 亚洲精品在线一区二区| 麻豆视频在线播放| 国产精品福利在线观看| 天天躁日日躁成人字幕aⅴ| 国产乱人伦精品一区二区三区| 免费精品视频最新在线| 日本免费福利视频| 亚洲18色成人| 亚洲精品国产精品国| 欧美另类极品videosbestfree| 中文成人在线| 亚洲午夜精品久久久中文影院av | 国产欧美日韩视频| 精品久久不卡| 密臀av一区二区三区| 久久久久久久久99精品| 国产免费av一区二区| 日韩成人高清在线| 国产伦久视频在线观看| 国产成人成网站在线播放青青| 欧美精品三级| 日本中文字幕精品| 亚洲国产精品一区二区www| 亚洲精品一级片| 国模视频一区二区| 偷拍自拍一区| 国产熟人av一二三区| 久久精品免费在线观看| 欧美在线视频精品| 色99之美女主播在线视频| 国产成+人+综合+亚洲欧美| 亚洲一区二区三区在线观看视频| 久久综合综合久久综合| 国产成人av免费在线观看| 欧美一级一级性生活免费录像| av大全在线| 国产高清精品一区| 日韩视频在线一区二区三区| 亚洲av无码国产精品久久| 色美美综合视频| av在线免费播放网站| 成人免费黄色网| 红桃视频欧美| a级在线免费观看| 欧美蜜桃一区二区三区| 成人av免费| 精品久久蜜桃| 日韩国产欧美在线视频| 日韩一区二区不卡视频| 精品久久国产老人久久综合| 性感女国产在线| 亚洲免费不卡| 国产成人精品亚洲午夜麻豆| 日韩高清精品免费观看| 亚洲免费视频网站| 国产国产一区| 男女啪啪免费视频网站| 久久精品视频一区二区三区| 国产人妖一区二区三区| 午夜精品久久久久久久久久久久久 | 欧美黑人疯狂性受xxxxx野外| 亚洲一区精品视频| 国产91在线观看| 久久久久久少妇| 久久成人精品电影| 日韩精品导航| 樱花草www在线| 福利微拍一区二区| 九七电影韩国女主播在线观看| 国产主播一区二区三区四区| 免费观看在线色综合| 久久免费视频精品| 色哟哟亚洲精品一区二区| 精品欧美午夜寂寞影院| 黄色片视频在线| 无吗不卡中文字幕| 日本成a人片在线观看| 精品国产一区二区三区麻豆免费观看完整版 | 精品三级av| 图片区乱熟图片区亚洲| 色婷婷狠狠综合| 123区在线| 香蕉视频免费版| 欧美激情自拍偷拍|