如果你是一名java開(kāi)發(fā)者,你應(yīng)該知道java源文件編譯后的class文件是十分輕易就可以反編譯的,有很多java反編譯工具都可以做到這一點(diǎn),例如,jad,jd-gui等,所以如果你想保護(hù)你的java class文件不被其他人反編譯的話,你需要使用一些java加密工具,不過(guò)并不是對(duì)java代碼進(jìn)行加密,因?yàn)榧用艿膉ava文件是無(wú)法編譯成可正常運(yùn)行的class文件的,所以我們只能加密class文件,更專業(yè)一點(diǎn)的稱謂,應(yīng)該是說(shuō)混淆java class,也就是對(duì)class文件進(jìn)行模糊處理,目的是為了讓反編譯者無(wú)法獲取正確的java源代碼,而且又不會(huì)影響java class文件的使用。
目前有很多工具可以混淆java class,流行的一點(diǎn)大多要收費(fèi)的,不過(guò)有一款開(kāi)源的混淆工具,也是基于java編寫(xiě)的,十分好用,它就是proguard。因?yàn)槲覀儼l(fā)布java應(yīng)用程序的時(shí)候,都是選擇將class文件打包在jar或者war文件,所以proguard支持對(duì)jar里的所有class進(jìn)行混淆,下面是它的使用方法。
1.定義混淆配置文件
proguard使用后綴為.pro的文件作為配置文件,在這個(gè)文件里配置需要混淆的jar文件,混淆后輸出的jar文件,混淆需要引用的java類庫(kù)等。下面是一個(gè)示例
2.混淆
下載proguard后,解壓將lib目錄里的proguard.jar文件和pro配置文件復(fù)制到j(luò)ava安裝目錄的bin下,如果你設(shè)置了JAVA_HOME,也可以不用復(fù)制到該目錄下,然后使用以下的命令來(lái)進(jìn)行混淆,假設(shè)pro配置文件命名為myconfig.pro
3.驗(yàn)證
這時(shí)你可以使用jd-gui反編譯工具來(lái)驗(yàn)證一下混淆結(jié)果,把混淆前和混淆后的jar拖到j(luò)d-gui工具,然后再對(duì)比源代碼,你就可以知道混淆后反編譯得到的與源代碼差別很大。更重要的是,你要把混淆后的jar復(fù)制到你的項(xiàng)目,看是否還能夠正常使用。
轉(zhuǎn)自老K博客:http://www.laokboke.net/2012/01/19/java-class-obfuscate/
聯(lián)系客服