일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 블록체인
- 7layer
- paas
- 메일헤더
- pyqt
- ios
- Python
- 안드로이드
- 드라이브바이다운로드
- 정적분석
- 악성앱
- 메타데이터
- 악성코드
- 파이썬
- anaconda
- objectiveC
- reactjs
- 더위쳐
- 파일리스
- 악성스크립트
- 네트워크
- 프론트앤드
- CPPG
- 웹크롤링
- 준비과정
- 오늘의게임
- 스타듀밸리
- 공급망공격
- MacOD
- IaaS
- Today
- Total
취보특개
Android ADB Usage 본문
ADB(Android Debug Bridge)란.
안드로이드 장치와 통신하여 디버깅 등의 작업을 진행할 수 있는 툴이다.
ADB를 이용하면,
애플리케이션 설치 및 백업, 디버깅, 삭제
시스템 정보 확인 및 발생되는 로그 확인
스크린샷, 화면녹화, 시스템 애플리케이션 비활성화
등 다양한 명령을 내릴 수 있다.
ADB 작동방식,
① ADB클라이언트실행
② ADB 서버 프로세스가 실행중인지 점검, 실행상태가 아니라면 서버 구동
③ 로컬 TCP 포트 5037에 바인딩되어 클라이언트로부터 전송되는 명령어 수신 대기
ADB 설치방법
1. 설치파일
(Windows) https://dl.google.com/android/repository/platform-tools-latest-windows.zip
(Linux) https://dl.google.com/android/repository/platform-tools-latest-linux.zip
(Mac OS) 용 https://dl.google.com/android/repository/platform-tools-latest-darwin.zip
2. 쉘
(Linux)
$ sudo apt-get install android-tools-adb
(Mac OS (Homebrew))
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew cask install android-platform-tools
(Mac OS (MacPorts))
$ sudo port install android
$ sh /opt/local/share/java/android-sdk-macosx/tools/android
# 이후 platform-tools 선택 후 설치
$ echo 'export PATH=$PATH:/opt/local/share/java/android-sdk-macosx/platform-tools' >> ~/.bash_profile
$ source ~/.bash_profile
안드로이드 기기 설정 및 연결
ADB를 사용하기 위해서는 안드로이드 기기에서 "ADB 디버깅"이 활성화 되어있어야 한다.
① 설정 > 휴대폰정보 > '빌드번호'를 7회이상 클릭하면 '개발자옵션'이 활성화 됨
② 개발자옵션 > 'usb 디버깅' 체크 (usb를 꽂지않은 상태에서 진행해야함)
③ 안드로이드 기기와 PC 연결
※ 연결확인 명령어 $adb devices
> offline : adb 연결되지 않았거나 응답하지 않을 경우
> device : adb 연결되었을 경우
> no device : 연결된 예뮬레이터 또는 안드로이드 기기가 없을 경우
> unauthorized가 떠도 아래 재시작 명령어 수행
※ ADB 연결 이상 시 ADB 재시작 명령어
$adb kill-server
$adb start-server
$adb devices
※ Wi-Fi를 통한 기기 연결
> USB가 아닌 무선으로 연결할 수 있다. 아래 링크 참고
developer.android.com/studio/command-line/adb?hl=ko
ADB 명령어
--윈도우라면 cmd에서 adb.exe의 위치로 이동한 뒤 명령어를 사용하면 된다.
2개 이상의 기기를 연결 했을 때 특정 기기로만 명령어 전송
$ adb shell -s [Serial Number] 명령어
안드로이드 기기 재시작
#일반
$ adb reboot
#리커버리 모드
$ adb reboot recovery
#부트로더
$ adb reboot bootloader
백업 및 복원
# 백업 옵션 목록
# -f(파일 경로 지정) -apk(apk 파일 포함) -noapk(apk 미포함)
# -all(전체백업) -shared(저장소백업) -noshared
# system(시스템영업 백업) -nosystem
# 전체 백업
$ adb backup -all -f backup.ab
# 앱데이터만
$ adb backup -noapk -noshared -nosystem -all -f backup.ad
# 앱과 앱데이터만
$ adb backup -apk -noshared -nosystem -all -f backup.ad
# 복원
$ adb restore backup.ad
파일 복사
#안드로이드 기기 > PC
$ adb pull "복사대상 파일 경로" "저장할 파일 경로"
# PC > 안드로이드 기기
$ adb push "복사대상 파일 경로" "저장할 파일 경로"
'''
Push 할 때, Permission Deny에러가 발생한다면, 일단 옮기려는 폴더에 chmod 777 권한을 주자
'''
애플리케이션 설치, 종료,삭제
#애플리케이션 설치
$ adb install "apk fileName"
#애플리케이션 재설치 (데이터 삭제X)
$ adb install -r "apk fileName"
#애플리케이션 메모리카드에 설치
$ adb install -s "apk fileName"
#애플리케이션 강제종료
$ adb shell am force-stop "packageName"
#애플리케이션 삭제
$ adb uninstall "packageName"
안드로이드 기기 로그 모니터링
# 모든 로그 출력
$ adb logcat
# 특정 로그 출력
$ adb logcat *:"옵션"
# 특정 로그 출력 옵션
# V(verbose) D(debug) I(info) W(warning) E(error) F(fatal) S(silent)
$ adb logcat *:D
스크린샷 및 녹화
#스크린샷
$ adb shell /system/bin/screencap -p "저장경로.png"
#녹화
$ adb shell screenrecord /sdcad/"파일명.mp4"
패키지 목록 보기 및 앱 활성화/비활성화
# 설치된 패키지 목록
$ adb shell pm list packages -f
# 설치된 패키지 데이터 삭제
$ adb shell pm clear "packageName"
# 특정 패키지 활성화 및 비활성화(구버전)
$ adb shell pm enable "packageNme"
$ adb shell pm diable "packageNme"
# 특정 패키지 활성화 및 비활성화(신버전)
$ adb shell pm unhide "packageNme"
$ adb shell pm hide "packageNme"
# 특정 패키지 비활성화 시 권한 에러가 날 경우
$ adb shell pm uninstall -k --user 0 "packageName"
# 특정 패키지 강제종료
$ adb shell am force-stop "packageName
안드로이드 기기 정보 확인
리눅스 기반이기 때문에 리눅스 서버 명령어 앞에 adb shell만 붙여주면 된다.
adb shell tcpdump, adb shell ping 등 리눅스 명령어 모두 동작한다.
# 커널 버전확인
$ adb shell cat /proc/version
# 안드로이드 버전확인
$ adb shell getprop ro.build.version.release
# 프로세서 정보
$ adb shell cat /proc/cpuinfo
# 실제 메모리 및 가상 메모리
$ adb shell cat /proc/meminfo
# 커널에 등록된 모듈 목록
$ adb shell cat /proc/devices
# 커널에 등록된 파일시스템 목록
$ adb shell cat /proc/filesystems
# 현재 input/output 포트
$ adb shell cat /proc/ioports
# swap 파티션의 크기 및 사용량
$ adb shell cat /proc/swaps
# 파티션 정보
$ adb shell cat /proc/partitions
# 시스템 가동시간
$ adb shell cat /proc/uptime
# 시스템 상태정보
$ adb shell cat /proc/stat
# 시스템 리소스 모니터
$ adb shell vmstat
# 실행중인 프로세스 목록
$ adb shell ps
# 시스템 프로세스 상황 모니터링
4 adb shell top
# 커널 디버깅 메세지
$ adb debug
'Boan > 모바일' 카테고리의 다른 글
iOS jailbreaking (0) | 2021.03.14 |
---|---|
iOS Homebrew Usage (0) | 2021.03.14 |
Android Rooting (0) | 2021.01.10 |
Frida Usage - 1 (Basic Concept) (0) | 2021.01.09 |
Android static analysis (0) | 2019.12.07 |