導航:首頁 > 編程語言 > java混淆編譯

java混淆編譯

發布時間:2024-11-16 15:48:54

java混淆器是做什麼的

樓上只說了其一,沒說其二: 混淆器的還有一個作用那就是對代碼進行壓縮,比如一個j2me程序打完包是400KB,使用混淆器混淆後就被壓縮成100KB的文件,這對於手機這種內存空間比較寶貴的設備來說顯得尤為必須。

② 求教Java web項目一般怎樣做代碼混淆或加密

一、java web項目混淆
proguard4.8工具,說是支持war的,可混淆過後少了classes目錄了,自然成功不了。網上搜的過程不詳說了,最後找著--「J2EE-web工程ProGuard代碼混淆07_28」,網址:http://wenku..com/link?url=CxToEqg5QWbz2_--cVqaImGKnLLLTO45u6uD_
根據提示一步步完成。
把web項目打成jar包後用proguard進行混淆,然後把混淆過後的class目錄替換發布包war中的對應目錄,啟動運行是正常的。
主要注意利用proguard生成xxx.pro文件,然後手動加工-keep class WebRoot.WEB-INFO.lib.* 等項目中不需要混淆的包和類。
二、java web項目打成.exe
沒找到免費的,這搜到個收費的--Jinstall,試了下功能挺好,
可以加密、集成jdk、tomcat,如果資料庫是mysql也集成,其他資料庫的話要設置資料庫的url.

③ (java混淆器)java混淆器ProGuard的圖形界面怎麼配置參數

proguard 配置簡介
參數: -include {filename} 從給定的文件中讀取配置參數 -basedirectory {directoryname} 指定基礎目錄為以後相對的檔案名稱 -injars {class_path} 指定要處理的應用程序jar,war,ear和目錄 -outjars {class_path} 指定處理完後要輸出的jar,war,ear和目錄的名稱 -libraryjars {classpath} 指定要處理的應用程序jar,war,ear和目錄所需要的程序庫文件 - 指定不去忽略非公共的庫類。 - 指定不去忽略包可見的庫類的成員。 保留選項 -keep {Modifier} {class_specification} 保護指定的類文件和類的成員 -keepclassmembers {modifier} {class_specification} 保護指定類的成員,如果此類受到保護他們會保護的更好 -keepclasseswithmembers {class_specification} 保護指定的類和類的成員,但條件是所有指定的類和類成員是要存在。 -keepnames {class_specification} 保護指定的類和類的成員的名稱(如果他們不會壓縮步驟中刪除) -keepclassmembernames {class_specification} 保護指定的類的成員的名稱(如果他們不會壓縮步驟中刪除) -keepclasseswithmembernames {class_specification} 保護指定的類和類的成員的名稱,如果所有指定的類成員出席(在壓縮步驟之後) -printseeds {filename} 列出類和類的成員-keep選項的清單,標准輸出到給定的文件 壓縮 -dontshrink 不壓縮輸入的類文件 -printusage {filename} -whyareyoukeeping {class_specification} 優化 -dontoptimize 不優化輸入的類文件 -assumenosideeffects {class_specification} 優化時假設指定的方法,沒有任何副作用 -allowaccessmodification 優化時允許訪問並修改有修飾符的類和類的成員 混淆 -dontobfuscate 不混淆輸入的類文件 -printmapping {filename} -applymapping {filename} 重用映射增加混淆 -obfuscationdictionary {filename} 使用給定文件中的關鍵字作為要混淆方法的名稱 -overloadaggressively 混淆時應用侵入式重載 -useuniqueclassmembernames 確定統一的混淆類的成員名稱來增加混淆 -flattenpackagehierarchy {package_name} 重新包裝所有重命名的包並放在給定的單一包中 -repackageclass {package_name} 重新包裝所有重命名的類文件中放在給定的單一包中 -dontusemixedcaseclassnames 混淆時不會產生形形色色的類名 -keepattributes {attribute_name,...} 保護給定的可選屬性,例如LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, and InnerClasses. -renamesourcefileattribute {string} 設置源文件中給定的字元串常量

④ 基於Maven的SpringBoot工程中,如何使用proguard進行Java代碼混淆

代碼混淆是將源代碼轉換成難以理解的形式,以保護軟體免受反向工程。執行代碼混淆的工具稱為代碼混淆器,常用於防止泄露源代碼、保護知識產權。混淆不能完全阻止反向工程,但能增加其難度,結合代碼虛擬化、加密、壓縮等技術可提高安全性。

在基於Maven的SpringBoot工程中,使用proguard進行Java代碼混淆的步驟如下:

1. 配置Maven插件:使用proguard-maven-plugin插件,將混淆規則寫入proguard.cfg文件。配置應包括保留特定類、方法、欄位等元素的規則。

2. 執行混淆命令:通過Maven命令執行混淆過程,將SpringBoot代碼進行混淆。

3. 生成混淆文件:混淆後會在target目錄生成多個混淆後的文件。

在使用過程中,可能會遇到以下問題及解決策略:

問題一:混淆過程出現錯誤。

解決策略:檢查並配置-keep參數,保留需要在混淆後依然存在的關鍵元素。

問題二:混淆配置文件未生效。

解決策略:確保混淆配置文件路徑正確,針對Maven多模塊項目,混淆路徑應基於子模塊的target文件夾

問題三:混淆後難以驗證混淆效果。

解決策略:在混淆配置中添加outjar參數,指定輸出目錄和混淆後的jar包名稱,便於查看混淆效果,同時簡化上傳至私服的流程。

通過以上步驟和策略,可以有效利用proguard對基於Maven的SpringBoot工程進行Java代碼混淆,實現源代碼保護,提高軟體安全性。

⑤ 如何混淆Java編譯後的類或jar,或將jar編譯成exe,使人無法反編譯獲得源代碼

混淆就可以了
我一直在用proguard4.5.1做Java項目的混淆

⑥ Java混淆編譯器

最近試用了幾個Java混淆器(Java Obfuscator) 感覺沒有一個完全另人滿意的 於是想乾脆自己寫一個得了 翻了幾頁Java虛擬機規范之後突發奇想 別的混淆器都是在編譯好的byte code上做文章 能不能從源碼直接編譯成經過混淆的class文件呢?就這樣花了一個多星期的時間寫了一個Java混淆編譯器(Java Obfuscator Compiler) Q: 什麼是混淆器? A: 由於Java程序運行時是動態連接的 因此編譯成的目標文件中包含有符號表 使得Java程序很容易被反編譯 混淆器可以打亂class文件中的符號信息 使反向工程變得非常困難 Q: 現有的混淆器有什麼問題? A: 現有的混淆器都是對編譯好的class文件進行混淆 這樣就需要編譯和混淆兩個步驟 並不是所有的符號都需要混淆 如果你開發的是一個類庫 或者某些類需要動態裝載 那些公共API就必須保留符號不變 這樣別人才能使用你的類庫 現有的混淆器提供了GUI或腳本的方式來對那些需要保留的符號名稱進行配置 如果程序較大時配置工作變得很復雜 而程序一旦修改配置工作又要重新進行 某些混淆器能夠調整位元組碼的順序 使反編譯更加困難 但我經歷過混淆之後的程序運行出錯的情況 Q: Java混淆編譯器是如何工作的? A: Java混淆編譯器是在Sun JDK中提供的Java編譯器(javac)的基礎上完成的 修改了代碼生成過程 對編譯器生成的中間代碼進行混淆 最後再生成class文件 這樣編譯和混淆只需要一個步驟就可以完成 另外可以在源程序中插入符號保留指令來控制哪些符號需要保留 不需要單獨的配置 Q: 如何安裝和運行JOC? A: 下載joc jar () 運行java jar joc jar就可以啟動Java混淆編譯器 joc的命令行參數和javac完全相同 但增加了一個新的參數 Xobfuscate 它的用法如下 Xobfuscate:<level>其中<level>指定混淆級別 可以是以下幾種級別 Xobfuscate:none不進行混淆 Xobfuscate:private 對所有private訪問級別的元素進行混淆 Xobfuscate:package 對所有private或package private元素進行混淆 Xobfuscate:protected 對所有private package private protected元素進行混淆 Xobfuscate:public對所有的元素都進行混淆 Xobfuscate:all 相當於 Xobfuscate:public如果使用 Xobfuscate不帶級別參數 則相當於 Xobfuscate:package Q: 如何使用符號保留指令? A: 除了在命令行用 Xobfuscate參數控制符號混淆級別外 還可以在源代碼中使用符號保留指令來控制那些符號需要保留 符號保留指令是一個Java文檔注釋指令 可以插入在類和類成員的文檔注釋中 例如 /*** This class should preserve * @preserve*/ public class Foo { /*** You can specify which field should be preserved * @preserve*/ private int x; /*** This field is not preserved */ private int y; /*** You can also preserve methods * @preserve*/ public void hello() {} /*** This method is not preserved */ private void collect() {} }如果沒有@preserve指令 則根據混淆級別及成員的訪問級別來確定符號是否保留 對於類的符號保留指令可以附帶一個保?留級別參數 來控制類成員的符號保留 包括 @preserve僅對類名進行保留 類成員的保留根據 Xobfuscate命令行參數決定 @preserve public 保留所有public成員 @preserve protected保留所有public和protected成員 @preserve package保留所有public protected package private成員 @preserve private保留所有成員 @preserve all相當於@preserve private Q: JOC有哪些限制? A: 不支持分別編譯 必須對所有的源文件進行混淆編譯 最後給出一個JOC混淆的效果 源文件 import java awt event *;import javax swing *;public class AboutBox extends JDialog{ public AboutBox() { initform(); } JPanel panel = new JPanel(); JButton button = new JButton(); JLabel jLabel = new JLabel(); JTextArea jTextArea = new JTextArea(); /*** NOTE: The following code is required by the form designer * It can be modified using the form editor Do not* modify it using the code editor */ private void initform() { this setDefaultCloseOperation( WindowConstants DISPOSE_ON_CLOSE ); this getContentPane() setLayout( new java awt CardLayout()); this setModal( true ); this setResizable( false ); this setTitle( About ); panel setLayout( null ); button setText( OK ); button setBounds( ); panel add( button ); jLabel setText( File System Viewer for Swing ); jLabel setVerticalAlignment( SwingConstants TOP ); jLabel setBounds( ); panel add( jLabel ); jTextArea setFont( new java awt Font( Dialog )); jTextArea setLineWrap( true ); jTextArea setOpaque( false ); jTextArea setText( This puter program is protected by right law ); jTextArea setWrapstyleWord( true ); jTextArea setBounds( ); panel add( jTextArea ); this getContentPane() add( panel Card ); this setSize( ); button addActionListener( new java awt event ActionListener(){ public void actionPerformed( java awt event ActionEvent ev ){ ?button _actionPerformed( ev ); }}); } private void button _actionPerformed(ActionEvent ev) { this dispose(); }}經Javac編譯後用JAD反編譯的結果 import java awt *;import java awt event ActionEvent;import java awt event ActionListener;import javax swing *;import javax swing text JTextComponent;public class AboutBox extends JDialog{ JPanel panel ; JButton button ; JLabel jLabel ; JTextArea jTextArea ; public AboutBox() { panel = new JPanel(); button = new JButton(); jLabel = new JLabel(); jTextArea = new JTextArea(); initform(); } private void initform() { setDefaultCloseOperation( ); getContentPane() setLayout(new CardLayout()); setModal(true); setResizable(false); setTitle( About ); panel setLayout(null); button setText( OK ); button setBounds( ); panel add(button ); jLabel setText( File System Viewer for Swing ); jLabel setVerticalAlignment( ); jLabel setBounds( ); panel add(jLabel ); jTextArea setFont(new Font( Dialog )); jTextArea setLineWrap(true); jTextArea setOpaque(false); jTextArea setText( This puter program is protected by right law ); jTextArea setWrapstyleWord(true); jTextArea setBounds( ); panel add(jTextArea ); getContentPane() add(panel Card ); setSize( ); button addActionListener(new ActionListener() { public void actionPerformed(ActionEvent actionevent) { button _actionPerformed(actio lishixin/Article/program/Java/JSP/201311/19213

閱讀全文

與java混淆編譯相關的資料

熱點內容
易語言編譯改名 瀏覽:721
阿里伺服器都提供什麼 瀏覽:754
cf打開伺服器接不上怎麼辦 瀏覽:901
linux下more命令 瀏覽:402
des演算法運算位數 瀏覽:375
珠海建行貸款解壓 瀏覽:635
布穀源碼iOS 瀏覽:66
雲存儲節點伺服器是啥 瀏覽:784
壓縮文件可以用pad解壓么 瀏覽:609
我的世界伺服器如何換 瀏覽:64
程序員要拒絕嗎 瀏覽:124
下期視頻怎麼解壓 瀏覽:383
方法命令函數指令 瀏覽:130
視頻已加密請輸入密碼確認 瀏覽:362
香港中產程序員 瀏覽:917
python適合什麼編譯器 瀏覽:844
雙強力夾文件夾使用方法 瀏覽:330
程序員瑜伽教學 瀏覽:809
python網頁分析工具 瀏覽:689
伺服器如何手動關機 瀏覽:47