文章詳情頁
兩種免費(fèi)的Java Obfuscator比較
瀏覽:5日期:2024-06-17 11:08:52
內(nèi)容: Java的bytecode很容易通過JAD等反編譯工具搞出源代碼, 目前最有效的保護(hù)方法是obfuscate類名和方法名注意: 用obfuscate防盜版是根本不可能, 連匯編這種東西都能被破解掉, 破解java代碼簡直就是小菜用obfuscate主要是為了保護(hù)源代碼的知識(shí)產(chǎn)權(quán), 別人無法用反編譯的源代碼做事情.本文從幾個(gè)不同的方面比較了兩種Free的Java Obfuscator的優(yōu)缺點(diǎn)..兩種Free的Java Obfuscator: yguard和Proguard.yguard:http://www.yworks.com/en/products_yguard_about.htmProguard:http://proguard.sourceforge.net/下面列出兩者的不同和優(yōu)缺點(diǎn)1. 速度 yguard的速度遠(yuǎn)遠(yuǎn)高于proguard, 主要區(qū)別在于proguard不管用沒有用, 上來就掃描jrelibrt.jar和其他所有用到的library 這個(gè)回合yguard勝出2. 是否Opensource以及遵循協(xié)議 yguard: ywork公司的產(chǎn)品,免費(fèi)使用, 但不是Open source Proguard是GPL(這里GPL只是指Proguard本身, 對于obfuscate出來的jar沒有限制), 可以從sourceforge.net下載源代碼 但是作者并不希望別人參與,沒有CVS,所以也無從知道作者的最新進(jìn)展. 這個(gè)回合proguard勝出3. 是否支持Package Name obfuscate yguard支持Package Name obfuscate Proguard不支持 這其實(shí)是很重要的一個(gè)特性, 一個(gè)好的Java程序往往在一個(gè)package里只有10個(gè)以下Class,根據(jù)package Name很容易猜出各個(gè)Class是干什么的, 比如: com.mycompany.license.a com.mycompany.license.b com.mycompany.license.c 雖然obfuscate了Class Name,但是因?yàn)檫@個(gè)license只有3個(gè)Class,很容易猜出來是干什么的 但是如果你obfuscate成: com.mycompany.a.a com.mycompany.a.b com.mycompany.a.c 則大大增加了困難, 尤其大型software, 有幾十個(gè)package的情況下, 會(huì)呈幾何級(jí)數(shù)增加反編譯的難度 這個(gè)回合yguard勝出, 但是Proguard已經(jīng)準(zhǔn)備在4.0里推出這個(gè)特性4. 增量obfuscate proguard支持增量obfuscate , yguard不支持.也就是在obfuscate a.jar時(shí), 記住所有的名字映射關(guān)系(比如MyUtil->a), 然后在obfuscate b.jar的時(shí)候, 使用那個(gè)映射關(guān)系(所有調(diào)用MyUtil改成調(diào)用a) 假設(shè)a.jar里面有一個(gè)MyUtil被b.jar里面的Main使用, 在沒有Incremental Obfuscate的情況下, 你必須指定不obfuscate a.jar里的MyUtil. 沒有增量obfuscate 壞處是很顯然的: 第一obfuscate的配置復(fù)雜了, 第二,暴露了某些Class 這個(gè)回合Proguard勝出5. 其它其他不太重要的特性: - Proguard可以用一篇文章中的詞(比如莎士比亞的劇本)作為變量名字, 呵呵 - Proguard可以刪除所有沒有用到的Class或者方法(叫做Shrink) - Yguard能夠obfuscate資源名稱, 比如Messages.properties->a.properties并且修改相應(yīng)的ResourceBundle類 - Yguard可以replace指定文本文件里的Class Name,比如修改eclipse plugin.xml里的Class名字 我個(gè)人不太贊成這種做法總結(jié)對于小型java應(yīng)用(只有一個(gè)package,一個(gè)jar文件), 兩者區(qū)別很小, (但是小型的java應(yīng)用值得obfuscate么?呵呵)目前因?yàn)闆]有obfuscate package name這個(gè)重要特性, 所以目前我偏向用yguard, 但是yguard沒有incremental obufscate, 真?zhèn)X筋, 現(xiàn)在就等Proguard4.0出來, 馬上移植到Proguard4.0上去 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd Java的b
標(biāo)簽:
Java
相關(guān)文章:
1. Android studio 三大模擬器比較(圖文詳解)2. PHP基礎(chǔ)之生成器4——比較生成器和迭代器對象3. python執(zhí)行系統(tǒng)命令4種方法與比較4. 比較JavaScript對象的四種方式5. docker獲取Let's Encrypt永久免費(fèi)SSL證書的方法6. XML 輕松學(xué)習(xí)手冊(比較不錯(cuò))第1/3頁7. Java使用ScriptEngine動(dòng)態(tài)執(zhí)行代碼(附Java幾種動(dòng)態(tài)執(zhí)行代碼比較)8. Python3 filecmp模塊測試比較文件原理解析9. java 自定義類比較器代碼10. 5款最強(qiáng)且免費(fèi)的Python IDE小結(jié)
排行榜
