Android反編譯&Android安全測試
目的:
1、借鑑別的應用是怎麼開發的,為了促進開發者學習,提升自我開發水平。
2、測試用來驗證自己公司應用是否安全,被反編譯存在安全隱患。
備註:前置對應Apk沒有程式碼混淆才可以反編譯成功,如果程式碼混淆後,檢視不到原始碼,程式碼混淆,對該APK進行反編譯,開啟產生的jar包可以看到,多了好多a、b、c之類的類檔案,說明混淆結果已經成功。
一、測試環境:
Wind10
二、使用工具:
1、apktool
①、下載地址:
連結:https://pan.baidu.com/s/1N0P6yEtu2jwLTlem-OZnlQ
提取碼:51QA
②、apktool工具說明:資原始檔獲取,可以提取出圖片檔案和佈局檔案進行使用檢視
2、dex2jar
①、下載地址:
連結:https://pan.baidu.com/s/1-qKkqMDJvBZogDQms5_GBA
提取碼:51QA
②、dex2jar工具說明:將apk反編譯成java原始碼(classes.dex轉化成jar檔案)
3、jd-gui
①、下載地址:
連結:https://pan.baidu.com/s/1lOn1uD_uKf-BarvUMgM0rA
提取碼:51QA
②、jd-gui工具說明:檢視APK中classes.dex轉化成出的jar檔案,即原始碼檔案
三、反編譯流程
1、資原始檔獲取,可以提取出圖片檔案和佈局檔案進行使用檢視
①、使用工具apktool,下載apktool工具後,解壓後:apktool1.5.2
得到檔案
②、進入檔案得到把要編譯包(Apk)放到該資料夾下。
如下圖所示:
③、開啟命令列頁面(執行-CMD-回車或Win鍵+R調出執行-CMD-回車),定位到apktool資料夾,我的工具放在D盤(D:\FBYAPK\apktool1.5.2)建議:路徑中不要出現中文,避免出現未知問題。
然後輸入命令:apktool.bat d -f Ahpj.apk Ahpjtest
說明:命令中Ahpj.apk指的是要反編譯的APK檔案全名,Ahpjtest為反編譯後資原始檔存放的目錄名稱,即為:apktool.bat d -f [apk檔案 ] [輸出資料夾]
④、反編譯成功
⑤、如果你想將反編譯完的檔案重新打包成apk,那你可以:輸入apktool.bat b Ahpjtest(你編譯出來資料夾)即可【經測試沒有成功,如果有興趣可以研究下】
2、將apk反編譯成java原始碼
①、解壓工具中的dex2jar和jd-gui
將要反編譯的APK字尾名改為.rar或則 .zip,並解壓(建議單獨建立一個資料夾解壓,解壓出來的檔案比較多),得到其中的額classes.dex檔案(它就是java檔案編譯再通過dx工具打包而成的),將獲取到的classes.dex放到之前解壓出來的工具dex2jar-0.0.9.15資料夾內。
②、把classes.dex檔案放到工具dex2jar-2.0下面
③、開啟命令列頁面(執行-CMD-回車或Win鍵+R調出執行-CMD-回車),定位到dex2jar-2.0資料夾,我的工具放在D盤(D:\FBYAPK\dex2jar-2.0)建議:路徑中不要出現中文,避免出現未知問題。
④、在CMD中輸入命令:d2j-dex2jar.bat classes.dex
⑤、在該目錄(D:\FBYAPK\dex2jar-2.0)下生成檔案:classes-dex2jar.jar
⑥、使用工具jd-gui開啟檔案:classes-dex2jar.jar就可以看到原始碼了,如下圖所示。
四、安全測試修復建議:
1、需要進行程式碼混淆,對該APK進行反編譯,開啟產生的jar包可以看到,多了好多a、b、c之類的類檔案。說明混淆結果已經成功。