はじめに
ADBインストール
adbコマンドがない場合は、Android Studioをインストールすれば付いてくる。
USBデバッグ有効化
また、Android端末の開発者モードからUSBデバッグを有効にする必要がある。
開発者モードはAndroidの「設定 -> デバイス情報 -> ビルド番号」を7回くらい連続タップすれば有効になる。
USBデバッグは開発者モードを有効にした後「システム -> 開発者オプション -> USBデバッグ」から有効にできる。
インストールされているパッケージ一覧を取得するコマンド
全てのパッケージを取得する
% adb shell pm list packages
サードパーティ製のアプリのみを表示
% adb shell pm list packages -3
ファイルのパスを含めて表示(apkファイルを取得するにはこの情報が必要)
% adb shell pm list packages -f
対象アプリの取得
今回は Google Chrome を取得してみる。
-
ファイルパスを検索する
% adb shell pm list packages -f | grep chrome package:/data/app/~~20ocdtrU8smqJl1aFkrDkQ==/com.android.chrome-Unr4Sl64lal8Lfisw55dhA==/base.apk=com.android.chrome
-
apkファイルの取得
% adb pull "/data/app/~~20ocdtrU8smqJl1aFkrDkQ==/com.android.chrome-Unr4Sl64lal8Lfisw55dhA==/base.apk" /data/app/~~20ocdtrU8smqJl1aFkrDkQ==/com.android.chrome-Unr4Sl64lal8Lf...ase.apk: 1 file pulled, 0 skipped. 24.9 MB/s (9851123 bytes in 0.377s)
以下のエラーが出る場合は、取得したファイル名の「base.apk」移行の「=com.android.chrome」箇所を削除して「adb pull」を実行すれば良い。
% adb pull "/data/app/~~20ocdtrU8smqJl1aFkrDkQ==/com.android.chrome-Unr4Sl64lal8Lfisw55dhA==/base.apk=com.android.chrome"
adb: error: failed to stat remote object '/data/app/~~20ocdtrU8smqJl1aFkrDkQ==/com.android.chrome-Unr4Sl64lal8Lfisw55dhA==/base.apk=com.android.chrome': No such file or directory
(おまけ)取得したapkファイルをデコンパイルしてみる
jadxでデコンパイルする。
% jadx base.apk
INFO - loading ...
INFO - processing ...
INFO - done
デコンパイルしたファイルを確認する。
% ls base/sources/org/chromium/base
ApkAssets.java EventLog.java PathUtils.java TraceEvent.java
ApplicationStatus.java IntStringCallback.java PiiElider.java UnguessableToken.java
BuildInfo.java JNIUtils.java PowerMonitor.java annotations/
BundleUtils.java JavaExceptionReporter.java RadioUtils.java library_loader/
Callback.java JavaHandlerThread.java SysUtils.java memory/
ContentUriUtils.java LocaleUtils.java ThreadUtils.java process_launcher/
EarlyTraceEvent.java MemoryPressureListener.java TimezoneUtils.java task/
0件のコメント