Android SDK에 포함돼있는 프로그램으로, 안드로이드 기기에 패키지를 설치하거나 셸에 접근하는 등 디버그와 관련된 기능을 수행할 수 있는 다목적 명령줄 도구
자주 사용하는 명령어
adb devices 보편적으로 기기와 로컬 환경이 정상적으로 연결되었는지 확인하기 위해 사용 -l 옵션으로 기기의 상세 정보를 조회할 수 있음
adb shell 기기의 셸에 접속할 때 사용 셸에 접속하지 않고 명령어 수행은 adb shell [command]로 사용
adb push [local 경로][remote 경로] 로컬 환경의 파일을 기기 내의 파일시스템에 업로드할 때 사용 보통 임시 디렉터리인 /data/local/tmp/에 임의 파일를 업로드할 때 많이 사용
adb pull [remote 경로][local 경로] 주로 기기 내의 사진, 캐시 파일, apk 파일 등을 다운로드할 때 사용 push 명령어의 반대
adb logcat 안드로이드의 logcat 내용을 확인할 때 사용 앱이 크래시 나거나 의도할 때 동작하지 않을 때 보통 logcat을 통해 원인을 파악함
adb install [apk] 기기 내에 앱을 설치할 때 사용
adb uninstall [package] 기기 내에서 패키지 이름에 해당하는 앱을 삭제할 때 사용 높은 권한의 앱은 삭제되지 않는 경우가 존재 ➔ Package Manager를 이용하여 삭제
adb forward [local][remote] 기기 내에서 사용하는 포트 포워딩을 위해 사용 보편적으로 frida-server의 포트를 변경해 열거나, 앱을 원격으로 디버깅하기 위해 디버깅 포트를 열 때 사용
Package Manager
adb 셸 내에서 Package Manage 도구로 명령어를 실행하여 기기에 설치된 앱 패키지에 관한 작업 및 쿼리를 실행할 수 있음
자주 사용하는 명령어
pm list packager [-f] 기기에 설치되어 있는 패키지를 모두 조회하는 명령어 패키지가 올바르게 설치되어 있는지 확인할 때 주로 사용 -f 인자를 사용하면 패키지 설치 apk 파일의 경로를 함께 출력 pm list packages -f | grep package_name 명령어를 통해 특정 패키지의 apk 경로를 찾을 수 있음
pm install/uninstall [package] [package] 인자로 전달한 패키지를 설치하거나 삭제하는 명령어 간혹 권한 문제로 앱이 설치/삭제되지 않는 문제가 발생 ➔ adb root와 adb shell 명령어를 통해 root 권한으로 셸에 접속한 후, pm 명령어를 이용함
Activity Manager
adb 셸 내에서 Activity Manager 도구로 명령어를 실행하여 액티비티 시작, 프로세스 강제 종료, 인텐트 브로드캐스트, 기기 화면 속성 수정 등 다양한 시스템 작업을 실행함
am start-activity [options] <internet> <intnet>에서 지정한 액티비티를 실행함
am broadcast [options] <internet> <internet>에서 지정한 브로드캐스트 인텐트를 실행함브로드캐스트로 전달할 데이터와 대상 인텐트를 설정할 수 있음
am kill [options] package 전달될 패키지와 관련된 모든 프로세스를 종료함