ANDROID] adb

노션으로 옮김·2020년 4월 22일
1

uitility

목록 보기
8/18
post-thumbnail

개요

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 이용

약간의 설정 후에 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는 기본적으로 nox_adb.exe라는 도구를 제공한다.
에뮬레이터를 실행하면 자동적으로 연결이 된다.

PS C:\Users\suij4\Downloads> nox_adb devices
List of devices attached
127.0.0.1:62001 device

사용

몇 가지 유용한 명령어를 정리하겠다.

adb shell

단말기 상의 프롬프트를 실행시킬 수 있다.

# 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 

adb install

.apk를 설치할 수 있다.

# adb install gaiainvaders.apk

adb shell am

특정 조건에 맞춰서 테스트해볼 수 있다.

# 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"/>

부록

connect to Nox

게스트 OS인 리눅스에서 호스트 OS인 윈도우에서 실행중인 Nox에 연결할 때 설정 방법이다.

네트워크 설정

Nox로 실행되는 단말기의 네트워크만 잡아주면 리눅스에서 adb로 연결할 수 있다.

포트 설정

nox_adb.exe로 접속해서 연결할 포트를 listening 상태로 설정해야 한다.

nox_adb tcpip 62002

에뮬레이터 ip 설정

에뮬레이터 자체 설정에서 브릿지 모드로 변경시켜야 한다.

static과 dhcp가 있는데, 테스트 결과 dhcp로 해도 무관하며 static으로 할 경우 ip주소를 wifi 주소와 맞춰줘야 한다.

wifi ip 설정

설정에서 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

0개의 댓글