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/以下に書き戻すことで実行することができます。




5 件のコメント :

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

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

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

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

Unknown さんのコメント...

apktool b -c XXXX -o new.apk
とすると、unknown¥nawes.properties(指定されたパスが見つかりません。)
となるのですが、どうすれば良いのでしょうか?

Erupuran さんのコメント...

初めまして。
.apkファイルは暗号化された圧縮(.zip)ファイルとのことですが、PCゲームのファイルにも.apkファイルのものがあるんですが多分それとはまた違うんですよね?

Argon さんのコメント...

It was wonderful blog on the unpack and pack of apk
this was amazing to read
Argon is the first unified security solution protecting the integrity of
your software throughout the entire DevOps pipeline
We provide best-in-class security for every stage of your CI CD pipeline,
ensuring maximum output without compromising speed for safety.
Argon delivers the first unified security solution
for your development infrastructure
Argon identifies all tools, assets, users,
and activities in your environment and
provides a single view into your whole
DevOps process. Through seamless
integration, connect effortlessly to your
existing CI/CD pipeline security tools and achieve maximum visibility.
Argon prioritizes and automates
remediation of alerts according to
CICD security best practices and compliance
rules, connecting security and DevOps
teams and reducing the need for
manual intervention