はじめに

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 を取得してみる。

  1. ファイルパスを検索する

    % adb shell pm list packages -f | grep chrome                                                                                              
    package:/data/app/~~20ocdtrU8smqJl1aFkrDkQ==/com.android.chrome-Unr4Sl64lal8Lfisw55dhA==/base.apk=com.android.chrome
  2. 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件のコメント

コメントを残す

アバタープレースホルダー

メールアドレスが公開されることはありません。 が付いている欄は必須項目です