1. 程式人生 > 其它 >Android反編譯&Android安全測試

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檔案 ] [輸出資料夾]

④、反編譯成功

,apktool檔案中會多出檔案:Ahpjtest

⑤、如果你想將反編譯完的檔案重新打包成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之類的類檔案。說明混淆結果已經成功。