記錄一次Android反編譯過程
一、所需要的工具
工具一:ApkTool
鏈接:https://pan.baidu.com/s/1fHzJm20xT6LxfqklSQEx0g
提取碼:9otj
工具二:Dex2Jar-2.0
鏈接:https://pan.baidu.com/s/1amBXR0gsMrgPoR9_80xMFA
提取碼:7dkm
工具三:jd-gui.exe
鏈接:https://pan.baidu.com/s/1VOrx_mmPEy1-ccmVrN8JLA
提取碼:rq8l
二、反編譯源碼篇(注意:這裏要確保apk沒有加固過)
2.1、我這裏準備一個待反編譯的apk,修改成rar或者zip格式,解壓後如下圖所示(注意:這裏的res中的資源都是亂碼的,無法看懂的;另外注意到有一堆classes.dex文件,這個就是待會兒要將dex轉化成jar的文件了):
2.2、進入工具dex2jar的文件中,按住shift+鼠標右鍵,選擇在此處打開命令行。然後將上圖的dex文件拷貝到dex2jar文件中,執行如下命令(成功後會生成下圖空框所示的classes-dex2jar.jar文件):
d2j-dex2jar.bat classes.dex
2.3、最後使用jd-gui.exe打開上圖生成的jar文件查看源碼即可。(這裏說一下,如果上兩個結果失敗出問題的話,請首先確保使用最新的工具包apktool和dex2jar試一次,還不行的話就去google。注意這裏將的前提針對沒有加固的apk) 結果展示如下圖:
三、反編譯資源篇
使用apktool工具,將要反編譯的apk放入該工具目錄下。執行如下命令(生成的結果如下圖;注意這裏的res資源就可以正常顯示了,同時生成的是smali文件):
apktool.bat d -f cloud.apk -o cloud
最後:如果你想修改裏面的代碼內容的話,可以使用java2smali工具在AndroidStudio中完成,然後替換掉apktool生成的原始smali文件即可。然後使用apktool重新打包,簽名,對齊後安裝即可。其中最重要的步驟就是找到源碼,然後修改成自己想要的,然後生成smali替換原來的smali文件。下面推薦一個博文看一下如何重新打包等。反編譯及重新打包