adb란 안드로이드 기기와 연결하여, 명령 프롬프트 형식으로 기기를 제어할 수 있는 도구이다.
기기로 하기 힘들거나 할 수 없는 작업들을 간단히 할 수 있는 장점이 있다.
ctf에서 apk 분석 문제를 풀 때도 유용할 것 같아서 관련 내용을 정리한다.
pc
Linux kali 5.4.0-kali4-amd64 #1 SMP Debian 5.4.19-1kali1 (2020-02-17) x86_64 GNU/Linux
android
9(Pie)
#sudo apt-get install android-tools-adb android-tools-fastboot
초기에는 안드로이드와 pc를 usb로 연결해야만 한다.
안드로이드에서 개발자옵션을 활성화 시킨 후, usb 디버깅을 허용해준다.
이제 usb 연결시, adb에서 자동으로 connect되기 때문에 바로 확인 가능하다.
# adb devices
List of devices attached
RFCM806KH6X device
약간의 설정 후에 wifi를 통해서 연결할 수 있다.
다음의 명령어로 안드로이드(192.168.0.4)에 포트 8989에 대한 연결을 허용시키고, connect를 시도하면
#adb tcpip 8989
#adb connect 192.168.0.4 8989
wifi로 연결된 상태를 확인할 수 있다.
# adb devices
List of devices attached
192.168.0.4:8989 device
Nox는 기본적으로 nox_adb.exe
라는 도구를 제공한다.
에뮬레이터를 실행하면 자동적으로 연결이 된다.
PS C:\Users\suij4\Downloads> nox_adb devices
List of devices attached
127.0.0.1:62001 device
몇 가지 유용한 명령어를 정리하겠다.
단말기 상의 프롬프트를 실행시킬 수 있다.
# adb shell
r3q:/ $ ls
acct d init.container.rc init.zygote64_32.rc proc sys
audit_filter_table data init.display.rc keydata product system
bin default.prop init.environ.rc keyrefuge publiccert.pem ueventd.rc
.apk
를 설치할 수 있다.
# adb install gaiainvaders.apk
특정 조건에 맞춰서 테스트해볼 수 있다.
# adb.exe shell am start -n "no.tghack.gaiainvaders/.JokeActivity"
jokeActivity
컴포넌트를 실행하는 명령어다.
소스파일이 다음과 같은 구조로 이루어져 있다.
에뮬레이터를 확인해보면
JokeActivity
가 실행되고 있는 것을 확인할 수 있다.
참고로 위의 방식으로 특정 컴포넌트만 실행시키기 위해서는
매니페스트 파일에 android:exported="true"
속성이 정의되어 있어야 한다.
<activity android:exported="true" android:name="no.tghack.gaiainvaders.JokeActivity"/>
게스트 OS인 리눅스에서 호스트 OS인 윈도우에서 실행중인 Nox에 연결할 때 설정 방법이다.
Nox로 실행되는 단말기의 네트워크만 잡아주면 리눅스에서 adb로 연결할 수 있다.
nox_adb.exe
로 접속해서 연결할 포트를 listening 상태로 설정해야 한다.
nox_adb tcpip 62002
에뮬레이터 자체 설정에서 브릿지 모드로 변경시켜야 한다.
static과 dhcp가 있는데, 테스트 결과 dhcp로 해도 무관하며 static으로 할 경우 ip주소를 wifi 주소와 맞춰줘야 한다.
설정에서 wifi의 ip주소를 변경해줘야 한다.
dns는 구글 dns로 설정하면 된다.
리눅스에서 연결해보면
root@kali:~# adb connect 192.168.0.85:62002
* daemon not running; starting now at tcp:5037
* daemon started successfully
connected to 192.168.0.85:62002
root@kali:~# adb shell
root@shamu:/ #
연결되어 쉘까지 실행가능한 것을 확인할 수 있다.
https://www.tenorshare.kr/android/adb-fastboot.html
https://developer.android.com/studio/command-line/adb#issuingcommands