Android Debug Bridge

yamewrong·2022년 10월 31일
0

모바일해킹

목록 보기
2/3
post-thumbnail

Android Debug Bridge (ADB)는 Android SDK에 포함돼있는 프로그램이다.
이는 안드로이드 기기에 패키지를 설치하거나 셸에 접근하는 등 디버그와 관련된 기능을 수행할 수 있는 다목적 명령줄 도구 이다.
ADB를 통해서 안드로이드에 명령을 내릴 수 있는데 이때, Package Manager(pm) 명령어와, Activity Manager(am) 명령어를 사용한다.

ADB에서 유용하게 사용되는 명령어는 아래와 같다.

adb devices [-l]: 연결된 기기 목록을 출력한다. -l 옵션을 함께 사용할 시 기기의 상세한 정보를 함께 출력한다.
adb shell [command] : 연결된 기기의 셸에 접속한다. command 부분에 셸 명령어를 입력 시 명령어를 실행한다.
adb push [local][remote] : 로컬환경의 파일을 기기 내의 파일시스템에 업로드할 때 사용한다.
local에는 로컴 파일의 경로를, remote에는 기기 내 파일 경로를 입력한다.
보통 안드로이드 내의 임시 디렉터리인 /data/loacl/tmp/에 임의 파일을 업로드할 때 많이 사용된다.
adb pull [remote][local] : 기기 내에 존재하는 파일을 로컬로 다운로드한다.
adb log cat : 기기의 logcat 내용을 확인할 수 있다.
adb install [apk] : 기기에 패키지 이름에 해당하는 앱을 설치한다.
adb uninstall [package] : 기기에서 패키지 이름에 해당하는 앱을 삭제한다. 다만 높은 권한의 앱은 삭제되지 않는 경우가 존재하는데, 이때에는 Package Manager를 이용해야 한다.
adb forward [local][remote] : 기기 내에서 사용하는 포트포워딩을 위해 사용한다. 보편적으로 frida-server의 포트를 변경해 열거나, 앱을 원격으로 디버깅하기 위해 디버깅 포트를 열 때 사용한다.

Package Manager

Package Manager(pm)은 adb 셸 내에서 Package Manager 도구로 명령어를 실행하여 기기에 설치된 앱 패키지에 관한 작업 및 쿼리를 실행할 수 있다.
Package Manager은 다양한 기능을 제공하지만, 가장 많이 사용되는 두가지 기능은
1. pm list packages [-f]
2. pm install/uninstall [package]
이다.
1. pm list packages [-f] 기기에 설치되어 있는 패키지를 모두 조회하는 명령어이다. 패키지가 올바르게 설치되어 있는지 확인할 때 주로 사용된다. -f 인자를 함께 전달하면 패키지 설치 apk 파일의 경로를 함께 출력해준다.
따라서 원하는 패키지의 apk를 추출하고 싶다?
-> pm list packages -f | grep package_name 명령어를 통해 apk 경로를 찾은 후, adb pull apk_path local 와 같은 명령어를 통해 로컬 호스트로 패키지를 옮길 수 있다.
2. pm install/uninstall [package]는 [packages] 인자로 전달한 패키지를 설치하거나 삭제하는 명령어를 이용하지만, 간혹 권한 문제로 앱이 설치/삭제되지 않는 문제가 발생한다.
-> 이 경우에는 adb root 와 adb shell 명령어를 통해 루트 권한을 셸을 접속한 후, pm 명령어를 이용한다.

Activity Manager

Activity Manager(am)는 adb 셸 내에서 Activity Manager 도구로 명령어를 실행하여 액티비티 시작, 프로세스 강제 종료, 인텐트 브로드캐스트, 기기 화면 속성 수정 등 다양한 시스템 작업을 실행할 수 있다.
am start-activity [options] 는 에서 지정한 액티비티를 실행한다. 의 구성은 명령어 표 하단 옵션 표에서 확인할 수 있다.
am broadcast [options] 는 에서 지정한 브로드캐스트 인텐트를 실행한다. 브로드캐스트로 전달할 데이터와 대상 인텐트를 설정할 수 있다.
am kill [options] package 는 전달된 패키지와 관련된 모든 프로세스를 종료한다.

0개의 댓글

관련 채용 정보