国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ProGuard詳解 - Java代碼混淆

這篇具有很好參考價(jià)值的文章主要介紹了ProGuard詳解 - Java代碼混淆。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、java代碼混淆使用場(chǎng)景 - proguard

1.1 混淆使用場(chǎng)景

? ?我們?cè)诠こ虘?yīng)用中經(jīng)常會(huì)遇到核心代碼不希望給別人抄襲,但系統(tǒng)是用java開發(fā)的,無法避免被反編譯的情況,這樣可以用代碼混淆的方式來解決。
? ?調(diào)查了一下主流的第三方混淆工具,發(fā)現(xiàn)只有ProGuard用的最多,而且版本一直在更新維護(hù),功能也比較多,所以打算用這個(gè)來混淆。

1.2 proguard簡(jiǎn)介

? ?ProGuard是Java類文件收縮器,優(yōu)化器,混淆器和預(yù)驗(yàn)證器。這些可以使代碼庫更小,更有效,并且更好地抵御逆向工程。
? ?proguard包括四個(gè)功能:
(1) shrinker - Java類文件收縮器:
???檢測(cè)并移除沒有用到的類,變量,方法和屬性。
(2) optimizer - Java類文件優(yōu)化器:
???分析并優(yōu)化了方法的字節(jié)碼,非入口節(jié)點(diǎn)類會(huì)加上private/static/final, 沒有用到的參數(shù)會(huì)被刪除,一些方法可能會(huì)變成內(nèi)聯(lián)代碼。
(3) obfuscator : 混淆器
???使用短又沒有語義的名字重命名非入口類的類名,變量名,方法名。入口類的名字保持不變。
(4) preverifier : 預(yù)驗(yàn)證器
???預(yù)校驗(yàn)代碼是否符合Java1.6或者更高的規(guī)范(唯一一個(gè)與入口類不相關(guān)的步驟)。
注:如果你的代碼中用到了反射,那需要把反射調(diào)用的類,變量,方法也設(shè)置成入口節(jié)點(diǎn)。只需要加上-keep就可以了。(下面會(huì)講)

除了proguard之外,還有一個(gè)DexGuard,是專門用來優(yōu)化混淆Android應(yīng)用的。它的功能包括資源混淆,字符串加密,類加密和dex文件分割等。它是在android編譯的時(shí)候直接產(chǎn)生Dalvik字節(jié)碼。

1.3 proguard下載

? ?proguard官網(wǎng): https://www.guardsquare.com/proguard.

二、proguard使用示例

注:我這邊使用的是proguard6.1.1版本

下載了proguard6.1.1這個(gè)版本,解壓縮后執(zhí)行proguard6.1.1\bin\proguardgui.bat這個(gè)文件就可以打開軟件

2.1 運(yùn)行

?下圖中標(biāo)紅框的地方是需要特別設(shè)置的,其他地方都可以默認(rèn)
1、點(diǎn)擊next,進(jìn)入下一步
ProGuard詳解 - Java代碼混淆

2.2 設(shè)置Input/Output

ProGuard詳解 - Java代碼混淆
1、“Add input”:選擇要混淆的jar文件
2、“Add output”:設(shè)置混淆后的文件保存的路徑和名字

(1) 如果混淆后工程名稱不需要改變的話,指定一個(gè)目錄位置,混淆的工程會(huì)自動(dòng)放入指定的目錄:
ProGuard詳解 - Java代碼混淆
(2)如果需要改變混淆后工程名稱的話,這里需要?jiǎng)?chuàng)建一個(gè)空的jar文件,指定混淆后導(dǎo)出保存的.
?如何創(chuàng)建一個(gè)空的jar文件?
??window+R
??-> cmd 進(jìn)入命令行界面
??-> e:(進(jìn)入需操作的磁盤)
?? -> cd 待創(chuàng)建文件的目錄
?? -> 輸入命令: jar cf 文件名.jar input-file(s-這里需要空文件,所以設(shè)置為空)
ProGuard詳解 - Java代碼混淆
執(zhí)行后,會(huì)出現(xiàn)如下文件:
ProGuard詳解 - Java代碼混淆
注:可能還有其他設(shè)置方法

3、下面那個(gè)“Add”:把你這個(gè)工程所有用到的依賴j包全部加進(jìn)來,包括依賴的所有依賴引用和java的依賴

1、如何知道你的工程用到哪些依賴?
(1) java工程或Gwt工程:
右鍵 工程 -> properties -> Java Build Path 可查看依賴工程和引用jar包
ProGuard詳解 - Java代碼混淆
(2)maven工程:
在pom.xml文件里加上這一段配置,可以把所有用到的依賴導(dǎo)出到指定目錄里。Maven install后,會(huì)在target\lib目錄下導(dǎo)出所有的依賴,把這些jar包加入到“Add”中:
ProGuard詳解 - Java代碼混淆

2、 注意 : java的依賴需要你到Java\jdk1.8.0\jre\lib目錄里Add進(jìn)來
如何找到j(luò)ava的jdk目錄?
–> 命令行輸入:java -verbose
ProGuard詳解 - Java代碼混淆

4、點(diǎn)擊next,進(jìn)入下一步

2.3 shrining - 收縮參數(shù)設(shè)置

1、設(shè)置keep
2、點(diǎn)擊next,進(jìn)入下一步

這里主要Keep選項(xiàng),根據(jù)自己情況選擇,例如是應(yīng)用程序就選Application,WEB工程就選Librarys,還有Android等自己根據(jù)情況選擇,然后next

ProGuard詳解 - Java代碼混淆

2.4 obfuscating - 配置混淆規(guī)則

1、設(shè)置輸出map日志文件位置:

??map文件為空的.txt文件,程序執(zhí)行時(shí)會(huì)自動(dòng)存儲(chǔ)打印原始名稱到混淆名稱的混淆映射日志數(shù)據(jù)到文件中。

2、根據(jù)自己的需要選擇混淆參數(shù)

參數(shù)說明:
ProGuard詳解 - Java代碼混淆

3、點(diǎn)擊next,進(jìn)入下一步
這里我的配置如下:
ProGuard詳解 - Java代碼混淆

2.5 optimization - 類文件優(yōu)化

? ?這里暫時(shí)沒有特殊設(shè)置,使用它的默認(rèn)設(shè)置

?如果混淆后程序運(yùn)行不太正常,可以把Optimize選項(xiàng)關(guān)閉。反正我們最關(guān)心的是混淆和防止反編譯,代碼優(yōu)化不優(yōu)化的不是很重要。

點(diǎn)擊next,進(jìn)入下一步
ProGuard詳解 - Java代碼混淆

2.6 information

1、設(shè)置java版本 : Target可以選擇JDK版本
2、點(diǎn)擊next,進(jìn)入下一步

注意: Ignore warnings about possibly erronous input,如果混淆的時(shí)候,因?yàn)榫鎸?dǎo)致無法繼續(xù),可以把這個(gè)選項(xiàng)勾上。其它的選默認(rèn)就可以了,然后下一步。

ProGuard詳解 - Java代碼混淆

2.7 process

1、點(diǎn)"Save configuration…"按鈕 : .pro的txt文件,將配置文件保存。
2、點(diǎn)擊Process進(jìn)行混淆,看到Processing completed successfully就說明成功了。
ProGuard詳解 - Java代碼混淆
ProGuard詳解 - Java代碼混淆
成功后的map日志示例如下:
ProGuard詳解 - Java代碼混淆

2.8 異常重新操作

??如果process顯示沒有成功或者以后需要進(jìn)行混淆操作,可以將2.7節(jié)保存的.pro文件加載,然后工具會(huì)自動(dòng)設(shè)置混淆參數(shù)。

?? 如果混淆出錯(cuò)了就倒回去查查每項(xiàng)配置是不是有問題,或者懂工具配置項(xiàng)含義的話可以直接修改上面保存的配置文件,然后重新Load configuration使用修改完的配置文件來進(jìn)行混淆操作。

ProGuard詳解 - Java代碼混淆

參考鏈接:https://blog.csdn.net/kouwoo/article/details/106938939文章來源地址http://www.zghlxwxcb.cn/news/detail-408307.html

到了這里,關(guān)于ProGuard詳解 - Java代碼混淆的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Unity3D代碼混淆方案詳解

    Unity3D代碼混淆方案詳解

    Unity引擎使用Mono運(yùn)行時(shí),而C#語言易受反編譯影響,存在代碼泄露風(fēng)險(xiǎn)。本文通過《QQ樂團(tuán)》項(xiàng)目實(shí)踐,提出一種適用于Unity引擎的代碼混淆方案,以保護(hù)代碼邏輯。 在Unity引擎下,為了防止代碼被輕易反編譯,需要采取相應(yīng)的保護(hù)措施。本文將分享一種基于實(shí)踐經(jīng)驗(yàn)的可行方

    2024年01月18日
    瀏覽(26)
  • ProGuard 進(jìn)階系列(一): 運(yùn)行源代碼

    ProGuard 進(jìn)階系列(一): 運(yùn)行源代碼

    在前面的文章深入 Android 混淆實(shí)踐:ProGuard 通關(guān)秘籍和深入 Android 混淆實(shí)踐:多模塊打包爬坑之旅中,已經(jīng)講到了如何在 Android 中使用 ProGuard,以及如何自定義實(shí)現(xiàn)混淆規(guī)則的生成。為了更深入地理解 ProGuard 的細(xì)節(jié),本系列文章從我感興趣的點(diǎn)出發(fā),記錄在閱讀 ProGuard 源碼

    2024年02月09日
    瀏覽(18)
  • Java字符串詳解:概念、特點(diǎn)與常見的使用場(chǎng)景

    Java字符串詳解:概念、特點(diǎn)與常見的使用場(chǎng)景

    Java字符串是開發(fā)中經(jīng)常使用到的一種數(shù)據(jù)類型,使用它可以處理文本、URL、文件路徑等多種類型的數(shù)據(jù)。本文將對(duì)Java字符串的概念、特點(diǎn)以及常見使用場(chǎng)景進(jìn)行詳細(xì)解釋。本文將分為以下幾個(gè)部分: String的概念和特點(diǎn) Java字符串常量池 字符串的不可變性 使用equals()方法比較

    2024年02月03日
    瀏覽(21)
  • 從零開發(fā)基于ASM字節(jié)碼的Java代碼混淆插件XHood

    因在公司負(fù)責(zé)基礎(chǔ)框架的開發(fā)設(shè)計(jì),所以針對(duì)框架源代碼的保護(hù)工作比較重視,之前也加入了一系列保護(hù)措施 例如自定義classloader加密保護(hù),授權(quán)l(xiāng)icense保護(hù)等,但都是防君子不防小人,安全等級(jí)還比較低 經(jīng)過調(diào)研各類加密混淆措施后,決定自研混淆插件,自主可控,能夠貼

    2024年02月06日
    瀏覽(17)
  • 【機(jī)器學(xué)習(xí)筆記15】多分類混淆矩陣、F1-score指標(biāo)詳解與代碼實(shí)現(xiàn)(含數(shù)據(jù))

    【機(jī)器學(xué)習(xí)筆記15】多分類混淆矩陣、F1-score指標(biāo)詳解與代碼實(shí)現(xiàn)(含數(shù)據(jù))

    參考文章 4.4.2分類模型評(píng)判指標(biāo)(一) - 混淆矩陣(Confusion Matrix)_進(jìn)擊的橘子貓的博客-CSDN博客_混淆矩陣 之前在邏輯回歸的文章中簡(jiǎn)單提到過F1-score,但并沒有詳細(xì)對(duì)其進(jìn)行說明和代碼實(shí)現(xiàn)。這里補(bǔ)一下。 混淆矩陣 (又稱 誤差矩陣 )是評(píng)判模型結(jié)果的指標(biāo),屬于模型評(píng)估的

    2023年04月17日
    瀏覽(22)
  • 如何使用代碼混淆技術(shù)保護(hù)移動(dòng)應(yīng)用程序安全

    如何使用代碼混淆技術(shù)保護(hù)移動(dòng)應(yīng)用程序安全

    在移動(dòng)應(yīng)用開發(fā)過程中,代碼保護(hù)一直是一個(gè)重要的議題。為了保護(hù)應(yīng)用程序免受黑客攻擊和逆向工程師的破解,開發(fā)人員使用各種方法來加強(qiáng)應(yīng)用程序的安全性。其中,代碼混淆是一種常用的技術(shù),可以通過對(duì)代碼進(jìn)行混淆、壓縮和重命名等操作,使得應(yīng)用程序的代碼難以

    2024年01月17日
    瀏覽(32)
  • 前端安全防線:使用Vue CLI配置代碼壓縮、加密和混淆功能

    前端安全防線:使用Vue CLI配置代碼壓縮、加密和混淆功能

    在 Vue 應(yīng)用程序的開發(fā)中,代碼壓縮、加密和混淆是優(yōu)化應(yīng)用程序性能和提高安全性的重要步驟。 Vue CLI 是一個(gè)功能強(qiáng)大的開發(fā)工具,它提供了方便的配置選項(xiàng)來實(shí)現(xiàn)這些功能。本文將介紹如何使用 Vue CLI 配置代碼壓縮、加密和混淆功能,以提高應(yīng)用程序的性能和安全性。

    2024年02月16日
    瀏覽(16)
  • 代碼混淆與反混淆學(xué)習(xí)-第二彈

    代碼混淆與反混淆學(xué)習(xí)-第二彈

    deflat腳本鏈接:GitHub - cq674350529/deflat: use angr to deobfuscation 這里以代碼混淆與反混淆學(xué)習(xí)-第一彈中的OLLVM 混淆樣本為例進(jìn)行去除?!綥LVM-4.0】 控制流平坦前 控制流平坦后 python deflat.py --file main-bcf --addr 0x401180 deflat.py 成功去除后效果: 去混淆后,效果還算可以,能分析程序流程

    2023年04月09日
    瀏覽(43)
  • 【設(shè)計(jì)模式】builder 創(chuàng)建者設(shè)計(jì)模式詳解(包含電商應(yīng)用場(chǎng)景及代碼示例)

    在常見的設(shè)計(jì)模式中,“Builder” 通常是指一種設(shè)計(jì)模式,而不是具體的類或方法。Builder 模式是一種創(chuàng)建型設(shè)計(jì)模式,其目的是通過提供一個(gè)獨(dú)立的構(gòu)建器類來構(gòu)建一個(gè)復(fù)雜對(duì)象。 建造者模式 (Builder Pattern) 是一種創(chuàng)建型設(shè)計(jì)模式,它的主要目標(biāo)是為了將一個(gè)復(fù)雜對(duì)象的構(gòu)

    2024年01月21日
    瀏覽(22)
  • uniapp一鍵發(fā)行代碼并混淆代碼

    uniapp一鍵發(fā)行代碼并混淆代碼

    安裝完成后,javascript-obfuscator就是一個(gè)獨(dú)立的可執(zhí)行命令了。 小程序發(fā)行后代碼會(huì)自動(dòng)打包到unpackage/dist/build文件中(生產(chǎn)環(huán)境) unpackage/dist/dev文件是發(fā)行旁邊的運(yùn)行按鈕打包出來的文件(開發(fā)環(huán)境) 1.在自己項(xiàng)目根目錄下創(chuàng)建一個(gè)build.bat腳本文件(最好是在unpackage/dist文件

    2024年02月16日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包