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ファイルを復号化しつつ展開することで内容が分かるようになり、書き換えもできるようになります。
準備するもの
- JDK7
- Android SDK ↑この2つはAndroid SDKを導入しておけば導入済み
- apktool.bat
- apktool_XXX.jar
- (7-Zip コマンドラインバージョン 7za.exe)
- 使用するAndroid端末のframework-res.apk(/system/framework/framework-res.apk)
- 展開、再構築したいapkファイル
ダウンロードした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だと思います。。
指摘ありがとうございます。
修正しておきました!!
コメントを投稿