Android/iOS端末、アプリを扱うのに便利なコマンド、aliasたち

Android/iOS端末、アプリについて取得したい情報があるとき、ついついAndroidiPhoneの端末のUIからがんばってしまいがちだが、 コマンドでやると楽に取得できる。 そんなときに使える、Android/iOSアプリを開発するときや、解析するときに便利なコマンド、aliasたちのまとめ。 普段つかっているのがmacOSなので、macOSでしか動作確認してないです。

Android端末向け

端末のipアドレスを取得する

.bashrcに以下のようにaliasを貼っている。

alias androidip='adb -d shell ip addr show wlan0 | egrep -o "10\.[^\. ]*.[^\. ]*\.[^\. ]*| 172\.[^\. ]*.[^\. ]*\.[^\. ]*| 192\.168\.[^\. ]*\.[^\. ]*" | head -n 1'

以下のように使える。

$ androidip
10.4.56.8/21

スクリーンショットを取る

.bashrcに以下のように関数を定義している。

function androidscreenshot () {
  timestamp=$(date +"%Y-%m-%d-%H-%M-%S")
  adb shell screencap -p /data/local/tmp/screenshot-${timestamp}.png
  adb pull /data/local/tmp/screenshot-${timestamp}.png
  adb shell rm /data/local/tmp/screenshot-${timestamp}.png
}

以下のように使える。

$ androidscreenshot 
/data/local/tmp/screenshot-2018-09-24-18-34-52.png: 1 file pulled. 15.0 MB/s (1999962 bytes in 0.127s)

.apkのパッケージ名を取得する

.bashrcに以下のように関数を定義している。aaptコマンドの結果をgrepしてるだけ。aaptコマンドの使い方を覚えられないので関数にしている。

function packagename () {
  aapt l -a $1 | grep "A: package"
}

以下のように使える。

$ packagename hoge.apk
    A: package="com.xxx.hoge" (Raw: "com.xxx.hoge")

.apkのパーミッションを取得する

.bashrcに以下のように関数を定義している。これもaaptコマンドの結果をgrepしてるだけ。

function apkpermission () {
  aapt l -a $1 | grep -i permission
}

以下のように使える。

$ apkpermission hoge.apk
    E: uses-permission (line=14)
      A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET")

iOS端末向け

スクリーンショットを取る

libimobiledevice に付属するコマンドを使う。

www.libimobiledevice.org

macOSではhomebrewからインストールできる。

$ brew install libimobiledevice

以下のように使える。

$ idevice_id -l # 接続できてるか確認
7a54172f5b3c2ab46372fb71127fa7b4de8d9d9e
$ idevicescreenshot
Screenshot saved to screenshot-2018-09-24-09-23-58.png

.ipaのインストールパスを取得する

IDAに付属しているios_deployコマンドを使う。IDAを持っている人はIDA Support: Download Centerからダウンロードできる。持っていない人は他のツールからがんばりましょう。

www.hex-rays.com

ios_deployコマンド、微妙に便利だが、公式マニュアルとは違う挙動をするので注意。

$ ios_deploy install -b Payload/hoge.app # 少し時間かかります
$ ios_deploy path -b com.xxxx.xxxxx.hoge
/private/var/containers/Bundle/Application/625D8A60-C8N3-272A-XXXX-XXXXXXXX/hoge.app/hoge