java項(xiàng)目代碼混淆 代碼混淆規(guī)則

JAVA 有對(duì)源代碼進(jìn)行混淆的混淆器么

不需要對(duì)源代碼混淆。class有這種功能的,在J2ME中混淆是必須的,結(jié)果跟你說(shuō)的一樣,不過(guò)原理不是你那么走的,混淆以后的class反編譯也會(huì)讓人看不懂,全部變成了a,b,c,d這樣的名字。

創(chuàng)新互聯(lián)公司專(zhuān)注于潮州網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供潮州營(yíng)銷(xiāo)型網(wǎng)站建設(shè),潮州網(wǎng)站制作、潮州網(wǎng)頁(yè)設(shè)計(jì)、潮州網(wǎng)站官網(wǎng)定制、微信小程序服務(wù),打造潮州網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供潮州網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

javaweb項(xiàng)目做混淆的詳細(xì)步驟

混淆的工具很多,最常用的為retroguard.

Java 代碼編譯后生成的 .class 中包含有源代碼中的所有信息(不包括注釋?zhuān)?,尤其是在其中保存有調(diào)試信息的時(shí)候。所以一個(gè)按照正常方式編譯的 Java .class 文件可以非常輕易地被反編譯。反編譯工具有很多種,其中非常強(qiáng)大的一種是 jad。

為了避免出現(xiàn)這種情況,保護(hù)開(kāi)發(fā)者的勞動(dòng),又有一種叫做 Java 混淆器的工具被開(kāi)發(fā)出來(lái)。Java 混淆器的作用是對(duì)編譯好的代碼進(jìn)行混淆,使得其無(wú)法被反編譯或者反編譯后的代碼混亂難懂。Java 混淆器也有很多種,其中比較強(qiáng)大的一種是 RetroGuard(只說(shuō)比較強(qiáng)大是因?yàn)槲覍?duì)其功效還是有些懷疑的)。

這里我介紹一下 RetroGuard 的使用方法。

將下載的 .tar.gz 或者 .zip 文件解壓。有用的只有 retroguard.jar 一個(gè)文件,其它的是源代碼和文檔。

RetroGuard 是針對(duì) jar 文件做混淆的。使用之前需要先配置一下。可以手工編輯配置文件,更好的方法是使用 RetroGuard 提供的 GUI 工具來(lái)生成配置文件。使用方法如下:

java -classpath retroguard.jar;xxx.jar;yyy.zip;... RGgui

然后在 GUI 的 Wizard 中設(shè)置各個(gè)參數(shù)。上面的 -classpath 中應(yīng)該列出要混淆的 jar 所依賴(lài)的所有的包。

RGgui 的詳細(xì)使用方法可以看 RetroGuard 的文檔 docs.html。

配置文件生成后,就可以運(yùn)行 RetroGuard 進(jìn)行混淆了。使用方法如下:

java -classpath xxx.jar;yyy.zip;... RetroGuard vvv-unofb.jar vvv.jar vvv.rgs vvv.log

其中 vvv-unofb.jar 是未混淆的 jar 文件,vvv.jar 是混淆后生成的 jar 文件,vvv.rgs 是配置文件,vvv.log 是日志文件。缺省的配置文件名稱(chēng)為 script.rgs,缺省的日志文件名稱(chēng)為 retroguard.log。

在生成配置文件時(shí)需要注意的是:

1、所有 public 的類(lèi)名、方法名、變量名應(yīng)該全部保留。因?yàn)樗性O(shè)置為 public 的內(nèi)容代表了整個(gè)包對(duì)外表現(xiàn)的接口。若某個(gè)內(nèi)容不想為外界訪(fǎng)問(wèn),就不應(yīng)該設(shè)置為 public 的。

2、若包中某個(gè)類(lèi)使用了 java.lang.Class 或者 java.lang.ClassLoader 中的某個(gè)方法加載了一個(gè)類(lèi),若這個(gè)類(lèi)在包外,不需要特別處理;若這個(gè)類(lèi)在包內(nèi),則需要保留這個(gè)類(lèi)的類(lèi)名,否則混淆后會(huì)找不到這個(gè)類(lèi)。

3、在包中的所有調(diào)試信息(源文件名、行號(hào)、變量/參數(shù)信息等等)應(yīng)全部刪除。

如何分析經(jīng)過(guò)混淆后的java代碼

混淆代碼 是為了防止class文件被反編譯用的 但是程序的功能還是正常的 和你正常運(yùn)行一樣

如果連變量名都混淆了,就是說(shuō)所有有具體意義的英文變量名都用a,b,c,x,y等等來(lái)表示,那這是不可能還原的,因?yàn)殡娔X也不可能知道你這個(gè)a實(shí)際上代表了你的年齡而那個(gè)c代表了你老婆的胸圍!

但如果只是個(gè)事混淆,那網(wǎng)上倒有不少工具可以格式化源代碼!自己搜一搜吧!推薦一款編輯器,IntelliJ,很不錯(cuò),值得一提的是,我用過(guò)的眾多編輯器中,這款編輯器的代碼格式化功能最強(qiáng)大!

Java項(xiàng)目源碼為什么要做代碼混淆

一般走代碼混淆就是為了保護(hù)源代碼,讓別人不至于通過(guò)反編譯輕易的獲得源代碼

文章名稱(chēng):java項(xiàng)目代碼混淆 代碼混淆規(guī)則
分享網(wǎng)址:http://muchs.cn/article42/doshgec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶(hù)體驗(yàn)、商城網(wǎng)站、App設(shè)計(jì)、微信公眾號(hào)、電子商務(wù)域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管