LoginSignup
1
1

More than 1 year has passed since last update.

root起動したNoxPlayer上のアプリにlldbを使ってattachする

Last updated at Posted at 2021-05-29

tl;dr

  • ホストPCのポートにNoxPlayer上のAndroidのadb_serverがforwardされており、adb connectで接続できる。
  • lldb/gdbするにはadbでport forwardする。
  • Root化起動を有効にすれば手軽に任意のプロセスにattachできる

モチベ

NoxPlayerはroot化起動が簡単に出来るのでReverseEngineeringの道具にできるのではないか。
rootでlldb-serverを起動したら任意のアプリ/プロセスをデバッグできるのでは→できた

手順

Noxのセットアップ

  1. 普通にイメージを作る
    今回はAndroid5(Lollipop)を選択 image.png
  2. システム設定→基本設定→Root化起動をONにしておく
  3. 起動しておく

adbのセットアップ

NoxPlayerのadbポート番号を確認する。

一台目が62001でそれ以降は62025から連番でふるらしい

https://news.mynavi.jp/article/androidnow-148/

adbコマンドで使うポート番号ですが、筆者の環境で調べたところ、インスタンス「Nox」は62001、インスタンス「Nox_1」が62025、「Nox_2」が62026となっていて、ポート番号62025から順に割り当てられるようです。

adb connectする

$ adb connect localhost:62025

$ adb devices
で表示されていればOK

lldbのセットアップ

ホストPCにlldbを入れておく。

WSL(Bash for Windows)に入れるのが楽ちん。
https://apt.llvm.org/
$ sudo apt-get install lldb-12

android用lldb-serverを入手する

https://developer.android.com/studio/?hl=ja#downloads
から android-studio-ide-XXX.XXXXXXX-windows.zip をDLする。
インストールする必要はない。

lldb-serverを抽出する

zipから android-studio/bin/lldb/android/armeabi/lldb-server を展開して保存しておく
NoxPlayerのAndroid5は32bitARMなのでそれに合わせたlldb-serverを使う。

ホストPCからlldb-serverをNoxPlayer向けにadb pushする

$ adb push <保存したパス>\lldb-server /data/local/tmp

パーミッションを実行可能にしておく。
$ adb shell chmod 777 /data/local/tmp/lldb-server

注意: NoxPlayerのadb shellは初めからrootなので注意すること

NoxPlayer上でlldb-serverを起動して接続する

adb shell "cd /data/local/tmp && ./lldb-server platform --listen *:5039"
サーバー起動してポート5039で待ち受け
ターミナルは開いたままにしておく。

ホストPCでポートフォワーディングの設定をしておく

$ adb forward tcp:1234 tcp:1234
でホストの5039をNoxPlayer上の5039にフォワードする

lldbを使ってデバッグする

ホストPCでlldbを起動してconnect

$ lldb
(lldb) platform select remote-android
(lldb) platform connect connect://localhost:5039

lldbで遊ぶ

(lldb) platform process list
psとは異なり、アプリ名が解決されないのでみにくい。
image.png
image.png

(lldb) attach 4795
ブラウザ()にattachしてみる。
rootでなければdebuggableじゃないアプリはattachできないはず。

attachできればあとは何でもできる
(lldb) thread list
image.png

参考URL

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1