[轉]Android應用安裝包apk檔案的反編譯與重編譯、重簽名

來源:互聯網
上載者:User

標籤:android   style   blog   http   color   io   使用   java   ar   

背景介紹:最近在做Robotium自動化測試,使用到solo.takeScreenshot()函數以在測試過程中,但此函數需要被測試APP具有 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />許可權。在只有被測試APP的apk檔案的情況下,修改apk檔案尾碼名為zip,解壓縮後,修改AndroidManifest.xml檔案,刪除META-INF檔案夾,重壓縮為apk檔案後,再簽名就可以了。但是!本文捨近求遠,藉機對apk檔案進行反編譯與重編譯、重簽名,來修改原始碼中的AndroidManifest.xml檔案。本文這麼做的目的, 就是想熟悉一下反編譯、重編譯和重簽名的過程。 1.請下載反編譯、重編譯工具Apktool在https://code.google.com/p/android-apktool/downloads/list下載apktool需要依賴的jar和apktool指令檔。以windows使用者為例,下載前兩個檔案: 2.將下載的兩個壓縮包解壓後,得到三個檔案,放入某檔案夾。例如:
3.將cmd定位至apktool.bat所在檔案夾中,輸入apktool.bat將出現所有的參數解釋。 4.我們先來進行反編譯apk的過程:在命令列中輸入 apktool.bat d -f <apk檔案路徑/apk檔案> <目標檔案夾>參數解釋 d:decompile,進行反編譯-f:強制清空目標檔案夾內已存在的內容例如: 5.進入產生的檔案夾,assets和res檔案夾中都已經產生了app用到的xml和素材lib檔案夾裡包含了交叉編譯庫smali檔案夾裡包含了反編譯出的smali檔案而AndroidManifest.xml正是我們需要修改的東西(為什麼要修改它?見背景介紹) 這裡順便解釋一下odex檔案和dex檔案。 dex檔案:Dex是Dalvik VM executes的全稱,即Android Dalvik執行程式,並非Java的位元組碼而是Dalvik位元組碼,16進位機器指令。 odex檔案:將dex檔案依據具體機型而最佳化,形成的optimized dex檔案,提高軟體運行速度,減少軟體運行時對RAM的佔用。 smali檔案:將dex檔案變為可讀易懂的代碼形式,反編譯出檔案的一般格式。 6.往AndroidManifest.xml裡面加入<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 7.開始重編譯吧。在命令列中輸入 apktool.bat b <反編譯出的檔案夾>參數解釋:b:build,重編譯例如: 8.進入目標檔案夾,新產生了build檔案夾和dist檔案夾build檔案夾裡包含了重編譯產生apk檔案所產生的過渡檔案,包括dex檔案,資源檔等dist檔案夾則包含了重編譯產生的apk檔案 9.這時候產生的apk檔案還無法直接安裝到手機上。否則,會出現INSTALL_PARSE_FAILED_NO_CERTIFICATES錯誤:出現這個錯誤的原因是:每個安裝的apk必須包含簽名。簽名的其中一個作用就是驗證該apk安裝包是否是個合法的安裝包。我們在經過反編譯-修改-重編譯的過程後,產生的apk是不包含簽名的。在安裝apk的過程中,手機未檢測到apk中的簽名,所以提示INSTALL_PARSE_FAILED_NO_CERTIFICATES錯誤。 關於Android簽名,可以參考:http://www.blogjava.net/zh-weir/archive/2011/07/19/354663.html。In a word, Android簽名機制不能阻止APK包被修改,但修改後的再簽名無法與原先的簽名保持一致。(擁有私密金鑰的情況除外)。 10.接下來,我們就要重編譯的apk檔案進行簽名可以使用re-sign.jar。re-sign-jar:https://dl.dropboxusercontent.com/u/5055823/re-sign.jar 雙擊,將未簽名的apk拖進UI介面,過一會兒就會提示你儲存簽名過的apk了。(第一次使用需要設定ANDROID_HOME和JAVA_HOME環境變數)

[轉]Android應用安裝包apk檔案的反編譯與重編譯、重簽名

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.