Apk反編譯實(shí)現(xiàn)步驟

1. 使用ApkTool拆包,得到AndroidManifest和res等資源文件

    命令使用:
    java -jar apktool.jar d yourApkFile.apk

    // 注意`apktool.jar`是剛才下載后的jar的名稱,`d`參數(shù)表示decode
    // 在這個(gè)命令后面還可以添加像`-o -s`之類(lèi)的參數(shù),例如
    // java -jar apktool.jar d yourApkFile.apk -o destiantionDir -s
    // 幾個(gè)主要的參數(shù)設(shè)置方法及其含義:
    -f 如果目標(biāo)文件夾已存在,強(qiáng)制刪除現(xiàn)有文件夾
    -o 指定反編譯的目標(biāo)文件夾的名稱(默認(rèn)會(huì)將文件輸出到以Apk文件名命名的文件夾中)
    -s 保留classes.dex文件(默認(rèn)會(huì)將dex文件解碼成smali文件)
    -r 保留resources.arsc文件(默認(rèn)會(huì)將resources.arsc解碼成具體的資源文件)

2. 將dex文件轉(zhuǎn)換成jar文件

    方法1:  通過(guò)dex2jar反編譯dex文件(步驟1中獲取),得到源碼

            命令用法:
            d2j-dex2jar classes.dex
            // 獲取classes.dex文件在最前面說(shuō)過(guò),只要把Apk當(dāng)做zip解壓出來(lái),里面就有dex文件了
            // 或者用apktool反編譯時(shí)帶上 `-s` 參數(shù)
            (打開(kāi)下載的dex2jar-2.0文件夾,里面有shell和bat腳本,進(jìn)入終端,就可以在命令行使用了。)

    方法2:  通過(guò)Google-enjarify,得到源碼(推薦使用)

            用法:
            1.下載獲取enjarify,解壓到期望目錄,并將該路徑添加到環(huán)境變量path中
            2.(可選) 由于enjarify要使用到python解析器,所以如果你電腦還沒(méi)安裝python開(kāi)發(fā)環(huán)境,下載一個(gè)python解析器(官方推薦pypy,下載地址:http://pypy.org/,注意:要pypy3.+版本)
            3.下載之后解壓到期望目錄,并將該路徑添加到環(huán)境變量path中 (在命令行輸入 pypy,出現(xiàn)下圖所示即為安裝成功)
            4.找到Enjarify目錄下的enjarify.bat文件,使用編輯器打開(kāi)(建議notepad),修改 
              python3 -O -m enjarify.main %* –> pypy -O -m enjarify.main %*
            5.在命令行輸入 enjarify -f XXX.apk , -f 在這里是必須要加上的,否則會(huì)出現(xiàn)警告,無(wú)法反  編譯APK文件
            6.反編譯之后的文件是一個(gè)jar文件,使用jd-gui查看Jar文件

驗(yàn)證pypy是否安裝好.PNG

3. jd-gui查看java源代碼

    下載對(duì)應(yīng)系統(tǒng)的jd-gui(下載地址:http://jd.benow.ca/), 解壓得到j(luò)d-gui.exe,
    雙擊既可以運(yùn)行這個(gè)工具,直接把上一步得到的xxx.jar拖到j(luò)d-gui程序的界面上即可打開(kāi)查看java源碼了

===相關(guān)軟件下載鏈接===

ApkTool
dex2jar
enjarify
pypy
JD-GUI
參考博客:
Android反編譯技術(shù)總結(jié)
Google反編譯新工具——Enjarify使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容