一般編譯的文件,都可以反編譯為源碼,但如果是經(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)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元臨海做網(wǎng)站,已為上家服務(wù),為臨海各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220
普通的class文件可以通過工具反編譯jd-gui,不過加密之后的就不是那么容易了。
查看.class文件可以用一個小軟件jd-gui.exe,要反編譯一個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)以下界面。這里我選擇一個test.class文件。點(diǎn)擊打開之后,出現(xiàn)以下反編譯test.java后的界面。這個是test.java的文件。
1、反編譯做的就是編譯的相反動作。舉例來說,例如一個程序用C語言來寫,寫完之后要編譯成CPU可以識別和運(yùn)行的機(jī)器代碼,也就是生成EXE程序。
2、通俗的說,反編譯是一個對目標(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等一些沒有意義的單個字母,再加入一些無作用的java代碼,然后將整個代碼和成一行,讓你從代碼結(jié)構(gòu)上無法入手。
1、不是每個反編譯都能完美的,用eclipse規(guī)范下代碼,然后不符合的語法的方法,自己換成適合當(dāng)前jdk版本支持的就可以了,反編譯還是得花力氣在代碼的上,偷懶有限啊。
2、這只能說明兩點(diǎn) 你的反編譯工作很弱;別人的代碼寫的很好。
3、通俗的說,反編譯是一個對目標(biāo)可執(zhí)行程序進(jìn)行逆向分析,從而得到原始代碼的過程。尤其是像.NET、Java這樣的運(yùn)行在虛擬機(jī)上的編程語言,更容易進(jìn)行反編譯得到源代碼。
4、反編譯的程序,不能保證100%的正確的,所以你再編譯,很明顯問題出來了。有些地方應(yīng)該還要手動修改一下。