一般編譯的文件,都可以反編譯為源碼,但如果是經(jīng)過加密、以及代碼異常復(fù)雜,是很難恢復(fù)全部的源碼。

成都創(chuàng)新互聯(lián)從2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元臨海做網(wǎng)站,已為上家服務(wù),為臨海各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
普通的class文件可以通過工具反編譯jd-gui,不過加密之后的就不是那么容易了。
查看.class文件可以用一個(gè)小軟件jd-gui.exe,要反編譯一個(gè)jar包的話,可以用反編譯工具:XJad,反編譯的文件文件可以導(dǎo)入eclipse中,進(jìn)行修改,改完再編譯。
如果是簡單的JAVA代碼或者沒有經(jīng)過混淆編譯的代碼就會使一樣或者差不多的。但是一下兩種情況就特別不一樣:經(jīng)過混淆編譯的 使用內(nèi)部類的 另外,所有的注釋都是沒有的。
可以用java反編譯器,DJ_java_discompiler 打開下載好的DJ_java_discompiler 選擇file,之后點(diǎn)擊open。之后出現(xiàn)以下界面。這里我選擇一個(gè)test.class文件。點(diǎn)擊打開之后,出現(xiàn)以下反編譯test.java后的界面。這個(gè)是test.java的文件。
1、反編譯做的就是編譯的相反動作。舉例來說,例如一個(gè)程序用C語言來寫,寫完之后要編譯成CPU可以識別和運(yùn)行的機(jī)器代碼,也就是生成EXE程序。
2、通俗的說,反編譯是一個(gè)對目標(biāo)可執(zhí)行程序進(jìn)行逆向分析,從而得到原始代碼的過程。尤其是像.NET、Java這樣的運(yùn)行在虛擬機(jī)上的編程語言,更容易進(jìn)行反編譯得到源代碼。
3、JODE出來的代碼的可讀性最好,不過有CLASS文件代碼用JODE是反編譯不出來出現(xiàn)異常;JAD出來的代碼經(jīng)常要進(jìn)行大量整理;JODE和JAD對混混淆過的代碼,變量的順序可能會不一樣,自變量的命名,JODE會好一些。
4、首先通過腳本將java代碼定義對象全部改為ABCD等一些沒有意義的單個(gè)字母,再加入一些無作用的java代碼,然后將整個(gè)代碼和成一行,讓你從代碼結(jié)構(gòu)上無法入手。
1、不是每個(gè)反編譯都能完美的,用eclipse規(guī)范下代碼,然后不符合的語法的方法,自己換成適合當(dāng)前jdk版本支持的就可以了,反編譯還是得花力氣在代碼的上,偷懶有限啊。
2、這只能說明兩點(diǎn) 你的反編譯工作很弱;別人的代碼寫的很好。
3、通俗的說,反編譯是一個(gè)對目標(biāo)可執(zhí)行程序進(jìn)行逆向分析,從而得到原始代碼的過程。尤其是像.NET、Java這樣的運(yùn)行在虛擬機(jī)上的編程語言,更容易進(jìn)行反編譯得到源代碼。
4、反編譯的程序,不能保證100%的正確的,所以你再編譯,很明顯問題出來了。有些地方應(yīng)該還要手動修改一下。
分享標(biāo)題:Java反編譯代碼不完整 java反編譯工具有什么用
URL分享:http://chinadenli.net/article15/desigdi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、響應(yīng)式網(wǎng)站、商城網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站策劃、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)