一、找到apk中的class.dex:
創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的西陵網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
把a(bǔ)pk文件改名為.zip,然后解壓縮其中的class.dex文件,它就是java文件編譯再通過(guò)dx工具打包成的。
1、把class.dex拷貝到dex2jar.bat所在目錄,直接拖動(dòng)class.dex到dex2jar.bat,生成classes.dex.dex2jar.jar。
或者:1.在cmd下進(jìn)入dex2jar.bat所在路徑,然后輸入“dex2jar.bat XXX”,XXX指的是你要反編譯的apk中的classes.dex文件所在路徑及名稱,比如:我的dex2jar.bat在D:\Android\apk_decode\dex2jar-0.0.7-SNAPSHOT路徑下, classes.dex在D:\Android下,所以: 你進(jìn)入dex2jar.bat路徑下后,輸入dex2jar.bat D:\Android\classes.dex,這樣會(huì)生成一個(gè)jar文件。
2.用rar解壓出jar文件中的class文件,然后用jad或DJ Java Decompiler反編譯工具將.class文件反編譯成.java文件
3、運(yùn)行JD-GUI工具,打開上面的jar文件,在File下有個(gè)Save JAR Source,它可以生成src源代碼。
安卓apk文件反編譯:
一、反編譯xml文件
1
首先下載我給你們提供的文件夾apk_fanbianyi,把它放到某個(gè)盤的根目錄下(為了方便輸入dos命令),然后打開apktool文件夾,安裝win+r鍵,然后輸入cmd,進(jìn)入dos命令行,大家別怕,不用暈,很簡(jiǎn)單的。
2
然后在dos命令中首先輸入文件夾所在盤符+“:”回車,接著再輸入cd+apktool所在目錄,切換dos工作空間到apktool文件夾下。
3
接著輸入
apktool.bat
d
【需反編譯apk文件路徑】
{【反編譯文件反編譯后的路徑】},其中最后一部分可以省去,系統(tǒng)會(huì)默認(rèn)把a(bǔ)pk文件反編譯到apktool目錄下,例如輸入
apktool.bat
d
d:/apk_fanbianyi/ttkp.apk,在apktool文件夾下就會(huì)生成一個(gè)ttpk的文件夾,所有的xml文件全部反編譯成功。
二、反編譯java文件
1
首先解壓需要反編譯的apk文件,拷貝出里面的classes.dex文件到dex2jar文件夾(為了方便操作,省去dos命令輸入路徑的麻煩)
2
把工作空間切換到dex2jar文件夾下,輸入命令cd
d:/apk_fanbianyi/dex2jar回車
3
輸入命令dex2jar.bat
classes.dex回車,發(fā)現(xiàn)dex2jar文件夾下多了一個(gè)classes_dex2jar.jar文件,這是反編譯成功的java文件
三、xml文件的打開
1
打開apktool文件夾下的ttkp文件夾,任意找到一個(gè)xml文件,選中單擊右鍵,選擇notepad++打開(需下載),如果沒(méi)有此軟件,可以選擇打開方式,選擇記事本打開
四、java文件的打開
1
dex2jar文件夾下的classes_dex2jar.jar拷貝到apktool文件夾的ttkp文件夾中,不能用notepad++打開,不然會(huì)亂碼的
2
啟動(dòng)apk_fanbianyi文件夾下的jd-gui.exe,然后點(diǎn)左上角file,選擇open
file,找到classes_dex2jar.jar文件,可以發(fā)現(xiàn)有很多包,選擇包下的任意一個(gè)java文件,打開不亂碼了,是不是很神奇,哈哈,你學(xué)會(huì)了安卓apk文件反編譯
首先APK是一種壓縮格式,普通的解壓工具都可以打開。
其次反編譯可以使用常見(jiàn)的jd,當(dāng)然如果人家的源代碼做了代碼混淆,反編譯就比較難了。
第一、可能是反編譯這塊有問(wèn)題。事實(shí)上,現(xiàn)在有好多的反編譯程序效果并不理想
第二、沒(méi)有加載一些需要的環(huán)境包。可能是運(yùn)行暫時(shí)不需要的問(wèn)題,也可能是版權(quán)安全問(wèn)題,那個(gè)游戲的源代碼方并沒(méi)有提供。這個(gè)問(wèn)題就沒(méi)有辦法了,除非你去游戲官網(wǎng)下載開源的代碼,不過(guò)開源的可能性小。
如何解決APK反編譯后JAVA代碼報(bào)錯(cuò)
反編譯出現(xiàn)錯(cuò)誤很正常
有可能生成apk的時(shí)候,使用了代碼混淆技術(shù)
這樣做是行不通的。反編譯一般是不能完全得到源Java代碼的,得到的代碼甚至?xí)姓Z(yǔ)法錯(cuò)誤,除非是簡(jiǎn)單的那些代碼。要改的話就得改.class文件,但這個(gè)非常困難,要在16進(jìn)制下改?;蛘吒膕mali文件,這個(gè)比改.class文件要稍微簡(jiǎn)單一點(diǎn),不用在16進(jìn)制下修改,可直接改代碼,但也是需要一定的smali語(yǔ)法知識(shí)的。