app反編譯

在進行安卓開發或者爬蟲開發過程中,偶爾會遇到需要將app進行反編譯分析參考源碼的需求,接下來,筆者將自己實踐過程記錄下來,給需要的朋友一個參考。僅供學習之用,勿做壞事兒,哈哈哈!

準備工作:確保電腦已經配置好了java環境,最好是jdk1.8以上

使用工具:

apktool (作用:資源文件獲取,可以提取出圖片文件和佈局文件進行使用查看)  下載地址:https://bitbucket.org/iBotPeaches/apktool/downloads/

dex2jar(作用:將apk反編譯成java源碼(classes.dex轉化成jar文件)) 下載地址:https://sourceforge.net/projects/dex2jar/files/

jd-gui  (作用:查看APK中classes.dex轉化成出的jar文件,即源碼文件) 下載地址: http://java-decompiler.github.io/

百度雲盤下載地址:https://pan.baidu.com/s/1u7h1VT8WCW4vhQXpzq6png

將下載好的工具放在指定目錄,解壓,如下圖所示:

1.用apktool反編譯apk得到圖片、XML配置、語言資源等文件

1.1 使用cmd命令cd到工具所在的目錄,例如

cd C:\Users\lyl\Desktop\app反編譯相關

1.2 使用 apktool 反編譯得到 圖片、XML等靜態資源

java -jar [apktool_2.4.0.jar] d -f [apk地址] -o [輸出的目錄名稱]

例如下圖所示,我這裏需要反編譯的app爲非常準的app,名字爲:feichangzhun_142.apk:

執行成功之後,將會在指定的 fcz 目下生成如下圖類似的文件,資源都在這裏面:

如果你想將反編譯完的文件重新打包成apk,那你可以:

java -jar [apktool_2.4.0.jar] b fcz (你編譯出來文件夾)

例如:

java -jar apktool_2.4.0.jar b fcz

之後在之前的fcz文件下便可以發現多了2個文件夾:

build

dist(裏面存放着打包出來的APK文件)

2.Apk反編譯得到Java源代碼

將要反編譯的APK後綴名改爲.rar或則 .zip,並解壓,得到其中的額classes.dex文件(它就是java文件編譯再通過dx工具打包而成的),將獲取到的 classes.dex放到之前解壓出來的工具 dex2jar-0.0.9.13文件夾內,例如下圖

2.1 在命令行下定位到 dex2jar.bat所在目錄,輸入

dex2jar.bat  classes.dex

如圖:

在該目錄下會生成一個 classes_dex2jar.jar 的文件,然後打開工具 jd-gui 文件夾裏的 jd-gui.exe,之後用該工具打開之前生成的classes_dex2jar.jar文件,便可以看到源碼了,效果如下:

備註:如果要反編譯的app是加了殼的話,需要脫殼,這裏推薦有個大佬的文章地址可以參考一下:http://www.52bug.cn/cracktool/4794.html

作者我這裏這個app也是使用的360加殼過的,所以也需要進行脫殼處理,具體脫殼步驟將在下一篇文章進行記錄

3.簽名

在從新打包之後,需要進行重新簽名,這樣才能在手機上成功安裝,這裏需要下載 Auto-sign.zip 工具,我這裏有整理一份以上傳百度雲盤,下載地址:https://pan.baidu.com/s/1JeA4MkS7BWdeQkSHLvUs1w

將 Auto-sign.zip 解壓,然後通過命令行 cd 到路徑下,並且把要簽名的app拷貝進去,例如我這裏要簽名的app爲 飛常準.apk ,拷貝進去之後,目錄結構如下圖:

在命令行使用此命令進行簽名

java -jar signapk.jar testkey.x509.pem testkey.pk8 飛常準.apk fcz.apk

注意:這裏的 fcz.apk 是指的簽名成功之後,要生成的新的app名稱

執行成功之後,將會在當前目錄生成已經簽名好的新文件,如下圖

我這裏遇到一個問題,就是我已經從新簽名之後,並且把安裝包發到手機上也成功安裝了,但是打開運行app之後,會閃退,不不知道是否是我修改源碼之後,修改出了問題,如有遇到同樣問題的朋友,可以留言互相交流下喔!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章