利用反編譯的java代碼 javac 反編譯

如何反編譯Apk得到Java源代碼

1.下載反編譯工具

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),吉林企業(yè)網(wǎng)站建設(shè),吉林品牌網(wǎng)站建設(shè),網(wǎng)站定制,吉林網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,吉林網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

需要下載四個工具:dex2jar、JD-GUI、apktool、apktool-install-windows-r05-ibot

dex2jar:將apk中的classes.dex轉(zhuǎn)化成Jar文件。

JD-GUI:反編譯工具,可以直接查看Jar包的源代碼。

apktool:反編譯工具,通過反編譯APK中XML文件,直接可以查看。

apktool-install-windows-r05-ibot:輔助windows批處理工具。

2.解壓縮APK包

apk文件也是一種常見的zip,常用的壓縮軟件就可輕松地解壓apk文件。用壓縮軟件將apk文件中的文件解壓到一個文件夾中,得到APK中的資源包括XML文件和classes.dex文件,classes.dex就是java文件編譯再通過dx工具打包而成的。

3.反編譯dex文件

解壓apk文件后,你會發(fā)現(xiàn)res目錄的圖片沒有加密,但java源碼編譯成了一個classes.dex文件,無法用普通的反編譯class文件的方法來處理,dex2jar可以將dex文件轉(zhuǎn)換成普通的jar包。

解壓下載的dex2jar,把解壓后的文件夾放到系統(tǒng)盤跟目錄中并把這個目錄加到系統(tǒng)path變量中,就可以直接用:dex2jar.bat或dex2jar.sh轉(zhuǎn)換dex文件了。

DOS行命令如下:dex2jar.bat xx\classes.dex(xx是classes.dex文件所在的路徑)。

將在同目錄得到普通jar包:classes_dex2jar.jar,就可以用處理普通jar包的方法來反編譯這個jar包得到原文件。

4.反編譯jar包

得到j(luò)ar包后,下載自已喜歡的反編譯工具,推薦使用JD-GUI,有比較簡單的圖形界面,可以反編譯單個class文件,也可以反編譯jar包,比較方便。

打開壓縮文件JD-GUI,運行jd-gui.exe,打開上面生成的jar包,即可看到源代碼了。

5.反編譯xml文件

打開解壓的res\layout目錄,有很多xml文件,如果你想看下作者是如何設(shè)計界面的,你會很失望,因為你看到的是一大堆亂碼!這個時候我們需要用到的是apktool。

具體操作方法:將下載的apktool和apktool-install-windows-r05-ibot兩個包解壓到同一個文件夾下,這個文件夾有三個文件:aapt.exe,apktool.bat,apktool.jar。把這個文件夾也放到系統(tǒng)盤的根目錄中并把這個目錄加到path變量中。以HelloWord.apk為例:

在DOS命令行中輸入:apktool d xx\HelloWord.apk HelloWord得到HelloWord文件夾,此文件夾中的xml文件就是編譯好的可以正常查看的文件。

這樣就得到了可以得到編譯的源碼和XML資源。

注意:文件的路徑中最好不要出現(xiàn)中文!

什么是Java代碼的編譯與反編譯?

Java代碼的編譯與反編譯

2017-02-21Hollis數(shù)盟

一、什么是編譯

1、利用編譯程序從源語言編寫的源程序產(chǎn)生目標(biāo)程序的過程。

2、用編譯程序產(chǎn)生目標(biāo)程序的動作。編譯就是把高級語言變成計算機可以識別的2進(jìn)制語言,計算機只認(rèn)識1和0,編譯程序把人們熟悉的語言換成2進(jìn)制的。編譯程序把一個源程序翻譯成目標(biāo)程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優(yōu)化;目標(biāo)代碼生成。主要是進(jìn)行詞法分析和語法分析,又稱為源程序分析,分析過程中發(fā)現(xiàn)有語法錯誤,給出提示信息。

二、什么是反編譯

計算機軟件反向工程(Reverseengineering)也稱為計算機軟件還原工程,是指通過對他人軟件的目標(biāo)程序(可執(zhí)行程序)進(jìn)行“逆向分析、研究”工作,以推導(dǎo)出他人的軟件產(chǎn)品所使用的思路、原理、結(jié)構(gòu)、算法、處理過程、運行方法等設(shè)計要素,某些特定情況下可能推導(dǎo)出源代碼。反編譯作為自己開發(fā)軟件時的參考,或者直接用于自己的軟件產(chǎn)品中。

三、Java類的編譯與反編譯

我們在最初學(xué)習(xí)Java的時候,會接觸到兩個命令:javac和java,那個時候我們就知道,javac是用來編譯Java類的,就是將我們寫好的helloworld.java文件編譯成helloworld.class文件。

class文件打破了C或者C++等語言所遵循的傳統(tǒng),使用這些傳統(tǒng)語言寫的程序通常首先被編譯,然后被連接成單獨的、專門支持特定硬件平臺和操作系統(tǒng)的二進(jìn)制文件。通常情況下,一個平臺上的二進(jìn)制可執(zhí)行文件不能在其他平臺上工作。而Javaclass文件是可以運行在任何支持Java虛擬機的硬件平臺和操作系統(tǒng)上的二進(jìn)制文件。

那么反編譯呢,就是通過helloworld.class文件得到j(luò)ava文件(或者說是程序員能看懂的Java文件)

四、什么時候會用到反編譯

1、我們只有一個類的class文件,但是我們又看不懂Java的class文件,那么我們可以把它反編譯成我們可以看得懂的文件。

2、學(xué)習(xí)Java過程中,JDK的每個版本都會加入越來越多的語法糖,有些時候我們想知道Java一些實現(xiàn)細(xì)節(jié),我們可以借助反編譯。

五、反編譯工具

1、javap

2、Jad:官網(wǎng)(墻裂推薦)

客戶端:

可以在官網(wǎng)下載可執(zhí)行文件,找到對應(yīng)的操作系統(tǒng)的對應(yīng)版本,然后進(jìn)行安裝使用。

因為我使用的是linux操作系統(tǒng),所以我下載的是Linux版本的工具,這個工具下載好之后會有一個執(zhí)行文件,只要在執(zhí)行文件所在目錄執(zhí)行./jadhelloworld.class就會在當(dāng)前目錄下生成helloworld.jad文件,該文件里就是我們很熟悉的Java代碼

Eclipse插件:

下載地址在官網(wǎng)下載插件的jar包,然后將jar包放到eclipse的plugins目錄下‘在打開Eclipse,Eclipse-Window-Preferences-Java,此時你會發(fā)現(xiàn)會比原來多了一個JadClipse的選項,單擊,在Pathtodecompiler中輸入你剛才放置jad.exe的位置,也可以制定臨時文件的目錄。當(dāng)然在JadClipse下還有一些子選項,如Debug,Directives等,按照默認(rèn)配置即可?;九渲猛戤吅?,我們可以查看一下class文件的默認(rèn)打開方式,Eclipse-Window-Preferences-General-Editors-FileAssociations我們可以看到class文件的打開方式有兩個,JadClipse和Eclipse自帶的ClassFileViewer,而JadClipse是默認(rèn)的。全部配置完成,下面我們可以查看源碼了,選擇需要查看的類,按F3即可查看源碼

反編譯工具可以編譯java代碼嗎

工具/原料

電腦必須裝JAVA

JAVA電腦環(huán)境教程

apktool

方法/步驟

1. 配置好JAVA環(huán)境變量,下載:apktool 解壓的文件放在C盤根目錄的apktool文件夾里(apktool文件夾自己創(chuàng)立)

打開命令提示符,(開始-運行-輸入cmd)

2. 輸入:cd \apktool 系統(tǒng)指令到了apktool文件夾(這里就是為什么要把解壓的apktool解壓的文件放到apktool文件夾的原因,當(dāng)然你也可以自命名文件夾的名稱,那么比如arc,那么指令就變成了:cd \arc 前提是你必須把apktool解壓的文件放到這個文件夾里面)

3. 使用RE管理器把系統(tǒng)里面的framework-res.apk 與 SystemUI.apk 提取出來放在apktool文件夾里面

4. 如果只是想反編譯framework-res.apk

輸入apktool if framework-res.apk(框架的建立)

5. 開始最重要的反編譯,輸入指令,apktool d framework-res.apk

(反編輯的APK一定要用沒換過圖片的,否則回編輯失敗)

6. 最后反編譯完成

7. 修改代碼完成后,輸入代碼:apktool d framework-res 即可完成回編譯

8. 如果反編譯的是系統(tǒng)文件,比如,SystemUI.apk 那么必須進(jìn)行掛載框架,反編譯時,必須敲入一下命令:(然后再重復(fù)4-7步驟)

apktool if framework-res.apk

apktool if SystemUI.apk

9. 對于三星手機(比如9100、9108/9100G),如果反編譯SystemUI.apk要敲入一下命令進(jìn)行框架掛載apktool if framework-res.apk

apktool if twframework-res.apk

apktool if SystemUI.apk

10. 回編譯的命令是 apktool b XXX (沒有后面的apk后綴)反編譯的命令是 apktool d xxx (有后面的apk)

java反編譯的代碼可以用嗎

不行??蓤?zhí)行文件你即使反編譯出來 也不是源碼。包括所有的反編譯軟件,反編譯出來的,都不是源碼,別看著反編譯出來的代碼感覺是對的,有的反編譯出來還是可以運行的都不算。另外反編譯別人的軟件 ,只能自己研究,去過用于商業(yè)用途可是犯法的哦

如何運行從反編譯的java代碼。我從網(wǎng)上下載了一個jar之后用反編譯工具得到了里面的代碼

反編譯工具(如jdk帶的javap、或jad)將TestSimplePlus反編譯成Java?Byte?Cod,命令如下:

jad?-o?-a?-s?d.java?TestSimplePlus.class

javap?-c?DocFooter??F://test.txt

再上傳個反編譯的神器(批量編譯)

標(biāo)題名稱:利用反編譯的java代碼 javac 反編譯
分享鏈接:http://www.muchs.cn/article8/doodcip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、全網(wǎng)營銷推廣、網(wǎng)站策劃、云服務(wù)器、網(wǎng)站導(dǎo)航、動態(tài)網(wǎng)站

廣告

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

h5響應(yīng)式網(wǎng)站建設(shè)