Apktoolを使ってapkファイルの展開、再構築をする

Apktoolを使ってapkファイルをデコード、エンコードする


Apktool

Apktool - A tool for reverse engineering Android apk files
http://ibotpeaches.github.io/Apktool/

Apktoolはapkファイルの展開、再構築をするツールです。
apkファイルは実はzipファイルなんですが、構築する際に中のデータが暗号化されます。なので単にzipファイルとして解凍するだけでは中に含まれる内容が読めないようになっています。

apkファイルの構成
  AndroidManifest.xml
  META-INF(署名ファイル)
  res(画像等のリソース)
  classes.dex(プログラム)
  resources.arsc(言語等のリソース)

そこでApktoolを使ってapkファイルを復号化しつつ展開することで内容が分かるようになり、書き換えもできるようになります。

準備するもの

  1. JDK7
  2. Android SDK
  3. ↑この2つはAndroid SDKを導入しておけば導入済み
  4. apktool.bat
  5. apktool_XXX.jar
  6. (7-Zip コマンドラインバージョン 7za.exe)
  7. 使用するAndroid端末のframework-res.apk(/system/framework/framework-res.apk)
  8. 展開、再構築したいapkファイル
例えばCドライブ直下にapktoolフォルダを作成して必要なファイルをコピーします。
ダウンロードしたapktool_XXX.jarはapktool.jarにリネームしておきます。
framework-res.apkは念のためframeworkフォルダごとadb pullコマンドで端末から取得しておきます。
C:\apktool>adb pull /system/framework framework

apktool━━━7za.exe
              ┣━apktool.bat
              ┣━apktool.jar
              ┣━framework
              ┗━XXXX.apk ←展開、再構築したいファイル

使い方

.odexファイルがある場合はまずこちら
初めに必要になるframeworkファイルをインストールしておきます。

C:\apktool>apktool if framework\framework-res.apk

apkファイルの展開
C:\apktool>apktool d XXXX.apk
コマンド実行後、XXXX.apkが展開されたファイルがXXXXフォルダ内に作成されます。
以上で展開は完了です。必要であればここで編集を行います。


apkファイルの再構築
C:\apktool>apktool b -c XXXX -o new.apk
成功すると再構築されたapkファイル(new.apk)が作成されます。
(※オプション-cによってアプリをapkに必要な元の署名ファイル(AndroidManifest.xmlとMETA-INF)がコピーされます。)

以上で再構築は完了です。書き換えたapkファイルを端末の/system/app/以下に書き戻すことで実行することができます。




2 件のコメント :

匿名 さんのコメント...

C:\apktool>adb pull /system/framework/framework framework
のところなのですが、
/system/framework/frameworkではなく/system/frameworkだと思います。。

がじぇったほりっく さんのコメント...

指摘ありがとうございます。
修正しておきました!!