1. 程式人生 > >apktool工具用法,反編譯、回編譯、加密,以及修改AndroidManifest.xml

apktool工具用法,反編譯、回編譯、加密,以及修改AndroidManifest.xml

由於工作中需要用到這些東西,自己琢磨了半天,將流程記錄下來,文采不好,望見諒。

如果要修改AndroidManifest.xml,如果直接拿到原apk檔案進行修改,想想就算了不可能滴。

要修改AndroidManifest.xml需要將原apk進行反編譯,編譯出來之後則可以修改。

反編譯和回編譯需要使用到的工具有:

2、簽名apk檔案需要用到jdk環境,所以前提先安裝jdk。 
簽名檔案需要用到keytool.exe和jarsigner.exe,這兩個檔案都在jdk的bin目錄下: 

è¿éåå¾çæè¿°

重重之重的環境就是安卓SDK

步驟以及用到的一些指令:

將1中的兩個包解壓到同一個資料夾下,總共會有三個檔案:aapt.exe,apktool.bat,apktool.jar

在命令列下定位到apktool.bat資料夾,輸入以下命令:使用命令列apktool d -f <apk_path> -o <outfile_path>,如下圖:

<apk_path>:原apk檔案所在目錄

<outfile_path>:輸出目標檔案

另外,可能會出現如下錯誤:

問題1:WARNING:Could not write to (C:\Users\****\AppData\Local\apktool\framework), using C:\Users\WBB53E~1.WAN\AppData\Local\Temp\ instead...

解決辦法:在C:\Users\****\AppData\Local自己建立\apktool\framework這個資料夾即可;

問題2:Exception in thread “main” java.lang.NullPointerException

解決辦法:刪除C:\Users\Administrator\apktool\framework\1.apk的apk檔案即可

問題3:Exception in thread "main" brut.androlib.AndrolibException: Could not decode ars
c file

解決辦法:apktool.jar的版本太低,如果使用高版本不會出現異常

反編譯基本結束,然後你可以隨心所欲修改裡面的內容了,別改過分了

--------------------------------------------------------------------------------------------------------

開始回編譯

特別注意:你要反編譯的檔案儘量要放在C盤的根目錄裡

使用命令列apktool b <outfile_path>

打包apk後的檔案在目錄C:\HelloAndroid下,生成了兩個資料夾:

build

dist

其中,打包生成的HelloAndroid.apk,在上面的dist資料夾下,回編譯OK,但是你現在去安裝回編譯的apk是不行的,會顯示安裝包損壞,安裝失敗,因為沒有簽名。。。

--------------------------------------------------------------------------------------------------------------

簽名apk檔案:

在2中已經提到連個工具就是利用jdk環境簽名apk檔案,在jdk中的bin執行cmd,直接敲入:

keytool -genkey -alias key.keystore -keyalg RSA -validity 30000 -keystore key.keystore

命令解釋:

Keytool 選項 描述 
-genkey 產生一個鍵值對(公鑰和私鑰) 
-v 允許動作輸出 
-alias 鍵的別名。只有前八位字元有效。 
-keyalg 產生鍵的加密演算法。支援DSA和RSA。 
-keysize 產生鍵的長度。如果不支援,keytool用預設值1024 bits.通常我們用2048 bits 或更長的key。 
-dname 專有名稱,描述誰建立的金鑰。該值被用作自簽名證書的頒發者和主題欄位。注意你可以不在命令列指定。如果沒有指定keytool會提示你(CN, 
OU, and so on)。 
-keypass 鍵的密碼。 主要為了安全起見,如果沒提供,keytool會提示你輸入。 
-validity 鍵的有效期,單位:天 
-keystore.keystore 用於儲存私鑰的檔案。 
-storepass 私鑰儲存檔案的密碼。 主要為了安全起見,如果沒提供,keytool會提示你輸入。這個密碼不會儲存在你的shell歷史記錄中。

回車後會讓你輸入一些東西,看著填就行了:

最後輸入y確定。 

在當前目錄下回生成一個key.keystore檔案,就是所需要的簽名。

現在簽名和apk已經有了,接下來就是要合併了,用到2中的另外一個工具:jarsigner

命令如下:

jarsigner -verbose -keystore key.keystore -signedjar (原apk).apk (目標apk名字).apk key.keystore

注意空格!

命令列解釋:

Jarsigner 選項 描述 
-keystore.keystore 包含你私鑰的儲存檔案 
-verbose 顯示輸出動作。 
-sigalg 簽名演算法,用 SHA1withRSA. 
-digestalg 訊息摘要演算法,用 SHA1. 
-storepass 儲存檔案的密碼。 主要為了安全起見,如果沒提供,jarsigner會提示你輸入。這個密碼不會儲存在你的shell歷史記錄中。 
-keypass 私鑰的密碼。 主要為了安全起見,如果沒提供,jarsigner會提示你輸入。這個密碼不會儲存在你的shell歷史記錄中。

最後回車,輸入之前設定的密碼,回車,就簽名完畢了: 

OK,基本已經完工,修改後的apk就可以成功安裝到裝置上了。

相關推薦

apktool工具用法編譯編譯加密以及修改AndroidManifest.xml

由於工作中需要用到這些東西,自己琢磨了半天,將流程記錄下來,文采不好,望見諒。 如果要修改AndroidManifest.xml,如果直接拿到原apk檔案進行修改,想想就算了不可能滴。 要修改AndroidManifest.xml需要將原apk進行反編譯,編譯出來之後則可

使用 apktool 工具對 Android APK 進行編譯編譯

原文:https://testerhome.com/topics/12075?locale=zh-TW keytool -genkey -keystore ~/bm.keystore -alias bm -keyalg RSA -validity 10000 jarsigner -v

java實現編譯apk修改AndroidManifest.xml再生成apk的工具

因為公司要求,需要弄一個能夠修改AndroidManifest.xml二進位制檔案內容的工具。該工具需要實現修改AndroidManifest.xml中標籤屬性值的功能。目前bug還有不少,後面會慢慢完善的。 工具功能說明: 1.解壓apk安裝包,獲得androidMan

Android 編譯&編譯

1.下載ShakaApktool工具 1.從github上下載ShakaApktool GitHub 2.為了方便,已在csdn上傳資源ShakaApktool 2.刪除old框架 window環境: 進入目錄,C:\Users\使用者名稱\apktool\framew

精讀JavaScript模式(五)函數的調閉包與重寫模式

返回 早期 如果 str 表示 info 圖片 mem c函數 一、前言 今天地鐵上,看到很多拖著行李箱的路人,想回家了。 在上篇博客結尾,記錄到了函數的幾種創建方式,簡單說了下創建差異,以及不同瀏覽器對於name屬性的支持,這篇博客將從第四章函數的回調模式說起。我想了

酒店IPTV語音監控方案說明(IPTV含直播點播酒店服務客房管理周邊景點等)

專案需求 IPTV系統功能定製開發和機房部署,新增酒店服務功能模組(桑拿服務、餐飲服務、房型介紹、衣物清理、客房管理和周邊景點等)。 直播、點播少佔寬頻或不佔寬頻。 支援語音系統接入。 支援監控系統接入和部署。 支援一個IPTV機房對多個酒店進行使用。 解決方案

酒店IPTV系統​​​​專案開發總結和方案簡介(含語音監控直播點播酒店服務客房管理周邊景點等功能模組)

專案需求 IPTV系統功能定製開發和機房部署,新增酒店服務功能模組(桑拿服務、餐飲服務、房型介紹、衣物清理、客房管理和周邊景點等)。 直播、點播少佔寬頻或不佔寬頻。 支援語音系統接入。 支援監控系統接入和部署。 支援一個IPTV機房對多個酒店進行使用。 解決方案

非同步事件驅動協程概念辨析

同步和非同步: 面試問題什麼是非同步非阻塞 A. 同步 所謂同步,就是在發出一個功能呼叫時,在沒有得到結果之前,該呼叫就不返回。 B. 非同步 非同步的概念和同步相對。 當一個非同步過程呼叫發出後,先返回,呼叫者不會立刻得到結果。 實際處理這個呼叫的部件是在呼叫發出後, 通過狀態、通知來通知

Spring 學習(二十五)——事務其他屬性(隔離級別只讀和過期)

併發事務所導致的問題 •當同一個應用程式或者不同應用程式中的多個事務在同一個資料集上併發執行時, 可能會出現許多意外的問題 •併發事務所導致的問題可以分為下面三種類型: –髒讀: 對於兩個事物 T1, T2, T1  讀取了已經被 T2 更新但 還沒有被提交的欄位. 之後, 若

Spring事務的傳播行為隔離級別只讀和過期

事務的傳播性- 當事務的方法被另一個事務的方法呼叫時,必須指定事務應該如何傳播。如:方法可能繼續在現有的事務中執行,也可能開啟一個新的事務,並在自己的事務中執行。- 事務的傳播行為可以由傳播屬性指定。Spring定義了7種傳播行為:required:如果有事務在執行,當前的方

java 三種呼叫機制(同步非同步)

java中存在三種呼叫機制 1:同步呼叫:一種阻塞式呼叫,呼叫方要等待對方執行完畢才返回,它是一種單向呼叫 2:回撥:一種雙向呼叫模式,也就是說,被呼叫方在介面被呼叫時也會呼叫對方的介面; 3:非同步呼叫:一種類似訊息或事件的機制,不過它的呼叫方向剛好相反

ROS學習篇(七)rostopic訊息記錄轉.txt

一、通過bag檔案記錄話題訊息 當釋出話題的節點執行後,可以通過rostopic list 列出當前執行的話題,然後記錄: mkdir bagfile cd bagfile rosbag record -a #記錄所有的話題 當訊息記錄完成後,結束c

screen 閃屏vim退出滾殘留問題

閃屏問題解決方法: 1、臨時姐姐方法ctrl+a  ctrl+g 2、徹底方法 修改/etc/screenrc中,將vbell on 修改為vbell off, 好像有兩處。 回滾問題: 我現在也只看到這個方法,但是我覺得會有別的方法的,還待看吧。 1、當程式輸出幾百

js同步異步調的執行順序以及閉包的理解

調用 develop 打印 有一個 日誌 ima get 由於 修改 首先,記住同步第一、異步第二、回調最末的口訣 公式表達:同步=>異步=>回調 看一道經典的面試題: for (var i = 0; i < 5; i++) {

安卓常用的編譯工具:dex2jarjd-guiapktool及oat2dex

[apk反編譯]-Jadx反編譯工具及下載位置(smb://172.16.78.123/forever/Tools/apktool/):jadx:https://github.com/skylot/jadx.git1.git clone https://github.com/

APK編譯重打包簽名之apktool實現

1.下載apktool https://download.csdn.net/download/qq_25844803/10842372 (點一下,爽一年,我是渣渣輝) 2.準備環境 將解壓出來的apktool.bat和apktool.jar放到同一個資料夾下(如:C:\apkto

IIS處理瀏覽器請求的流程 | 應用程式的生命週期 |編譯工具用法 |管道事件

我們在IIS上部署一個網站的時候(我們在Internet 資訊服務(IIS)管理器,對應網站的右邊>編輯網站>基本設定,可以看到,網站名稱與應用程式池的名稱是一樣的:其實我們在IIS裡建立一個網站的時候,IIS會自動給我們建立一個與網站名稱相同名稱的應用程式

編譯+編譯教程DIY美化你的手機【編譯framework-res.apk為例】

美化主要就是對framework-res.apk和systemUI.apk這兩個檔案的反編譯與回編譯,這裡說的反編譯與回編譯是所有深度美化的基礎,所有的美化都是基於對apk的反編譯後才能進行的。 而修改替換"framework-res.apk"和"systemUI.apk"後導致無法進入系統,或者無限開機重

apktool編譯編失敗解決方法

今天用apktoool反編譯apk,然後回編回去的時候報錯失敗了。具體情況是這樣的。 apktool版本:2.3.4 使用下面的命令反編譯apk: apktool d dou2.apk -o test 然後修改完成後使用下面的命令回編譯 cd test apk

apk編譯,(apktool)系統應用編譯出錯的解決辦法

近期反編譯修改一個APK,系統級別的應用程式。但回編時,出錯了。這就奇怪了,之前一直回編成功了無數次。 再嘗試反編譯後,不作任何修改直接回統。同樣出錯,看來找到問題了。詳細看編譯日誌 compiling smli.... compiling res..... Error..