天天看點

Mac環境安卓反編譯環境搭建:反編譯Apk實戰

安卓反編譯技術大家一定不會陌生,這也是我們開發的時候知道安卓使用Progrund混淆之後,可能會引發很多異常資訊、包括友盟統計無法統計到有效的崩潰的日志資訊,需要上傳混淆上傳的mapping檔案才能正常檢視。這一系列複雜的問題也不能阻擋我們混淆代碼,因為不混淆代碼。别人拿到你的Apk檔案之後,反編譯拿到你的源碼,那麼你的項目就相當與開源了。如果你的項目裡面已經配置了簽名檔案,這就相當于别人可以替你上傳項目到應用市場,替代你的項目産品了,這是非常可拍的。

下面我們就先內建反編譯環境:比較好的文章

其中最新下載下傳的就是apktool,這個工具在Mac環境需要按照官網提供的安裝步驟,都是英文的,可以用Google翻譯一下,如下圖:

Mac環境安卓反編譯環境搭建:反編譯Apk實戰

這裡第一步需要你點選進去,直接右鍵–》另存為一個apktool檔案,然後下面的步驟一步步往下走就行。

把兩個檔案複制到/usr/local/bin目錄下之後,執行如下指令:

5)保證這兩個檔案是可讀寫的:

cd  /usr/local/bin/

sudo chmod a+x apktool

sudo chmod a+x apktool.jar

6)驗證

apktool -v
           

如果出現下圖:

Mac環境安卓反編譯環境搭建:反編譯Apk實戰

說明你已經安裝apktool工具成功,如果提示commend not fund 問題,

/usr/local/bin/apktool: line 1: #!/斌/慶典: No such file or directory /usr/local/bin/apktool: line 2: #: command not found /usr/local/bin/apktool: line 4: #: command not found /usr/local/bin/apktool: line 5: #根據Apache許可證2.0版(“許可證”)獲得許

說明你第一步操作存在問題,建議還是按照官網的建議右鍵儲存為apktool檔案,然後按照步驟執行。

apktool d -f /Users/guotianhui/Desktop/0.apk  -o /Users/guotianhui/Desktop/apkfile
           

看指令也知道,第一個參數就是你要反編譯的Apk檔案的絕對位址,第二個參數就是你反編譯檔案的輸入路徑。

最後得到的檔案目錄如下:

Mac環境安卓反編譯環境搭建:反編譯Apk實戰

這裡我們就完成了反編譯的第一步,擷取到所有的資源檔案,但是我如果想進一步的看看源代碼怎麼辦呢?

dex2jar 使用

我們現在把 apk 當成一個壓縮包解壓開來,裡面有個 .dex 檔案。dex2jar 能把 .dex 檔案轉化成 .jar 檔案

  1. 将 apk 中 .dex 檔案移動到我們剛剛解壓 dex2jar 安裝的目錄下
  2. 終端輸入 sh d2j-dex2jar.sh classes.dex

這時我們會在目錄中看到有個 .jar 檔案。

運作 sh d2j-dex2jar.sh classes.dex 如果出現了 Permission denied

隻需要終端中運作 chmod +x d2j_invoke.sh 即可

jd-gui 使用

直接打開我們安裝的 JD_GUI.app ,将 .jar 檔案拖入應用上,我們即可看到 java 代碼了。

dex2jar遇到的問題:

Mac環境安卓反編譯環境搭建:反編譯Apk實戰

雖然提示出錯餓了,但是依然會生成jar檔案,直接拖到gui依然可以看的。

繼續閱讀