Android APK反編譯就這么簡單詳解(圖文詳解)
前言
自己很早以前就在反編譯,但是知道今天要做才又撿起來了,今天就把他記錄下來吧。
工具準(zhǔn)備
1、測試環(huán)境:
win10
2、使用工具:
2.1 CSDN上下載地址:
apktool
dex2jar
jd-gui
2.2 官方最新版本下載地址:
apktool(google code)
dex2jar(google code)
jd-gui(google code)
工具介紹
apktool
作用:資源文件獲取,可以提取出圖片文件和布局文件進(jìn)行使用查看
dex2jar
作用:將apk反編譯成Java源碼(classes.dex轉(zhuǎn)化成jar文件)
jd-gui
作用:查看APK中classes.dex轉(zhuǎn)化成出的jar文件,即源碼文件
反編譯流程
一、apk反編譯得到程序的源代碼、圖片、XML配置、語言資源等文件
1)下載上述工具中的apktool,解壓得到3個文件:aapt.exe,apktool.bat,apktool.jar ,將需要反編譯的APK文件放到該目錄下,
2)打開命令行界面(運(yùn)行-CMD) ,定位到apktool文件夾,輸入以下命令:apktool.bat d -f fish.apk fish
(命令中test.apk指的是要反編譯的APK文件全名,test為反編譯后資源文件存放的目錄名稱,即為:apktool.bat d -f [apk文件 ] [輸出文件夾])
3)說明獲取成功,之后發(fā)現(xiàn)在文件夾下多了個fish文件,點(diǎn)擊便可以查看該應(yīng)用的所有資源文件了。
4)如果你想將反編譯完的文件重新打包成apk,那你可以:輸入apktool.bat b test(你編譯出來文件夾)便可,效果如下:
5)之后在之前的test文件下便可以發(fā)現(xiàn)多了2個文件夾:
- build
- dist(里面存放著打包出來的APK文件)
二、Apk反編譯得到Java源代碼
1)下載上述工具中的dex2jar和jd-gui ,解壓
2)將要反編譯的APK后綴名改為.rar或則 .zip,并解壓,得到其中的額classes.dex文件(它就是java文件編譯再通過dx工具打包而成的),將獲取到的classes.dex放到之前解壓出來的工具dex2jar-0.0.9.15 文件夾內(nèi),
3)在命令行下定位到dex2jar.bat所在目錄,輸入dex2jar.bat classes.dex,效果如下:
4)在改目錄下會生成一個classes_dex2jar.jar的文件,然后打開工具jd-gui文件夾里的jd-gui.exe,之后用該工具打開之前生成的classes_dex2jar.jar文件,便可以看到源碼了,效果如下:
5)被混淆過的效果圖(類文件名稱以及里面的方法名稱都會以a,b,c....之類的樣式命名)。
反編譯現(xiàn)況
由于這種工具的存在對于知識產(chǎn)權(quán)的保護(hù)非常的不利,所以現(xiàn)在的技術(shù)也發(fā)生了改變,很多公司都會對自己的產(chǎn)品進(jìn)行設(shè)置,在反編譯的時候可能會出現(xiàn)各種各樣的異常,導(dǎo)致反編譯失敗。