ADB : 안드로이드 에뮬레이터나 pC에 실제 연결된 장치를 제어하기 위한 안드로이드 디버깅 도구 중 하나
명령 라인을 통해 사용자가 명령어를 입력하여 안드로이드 기기와 통신하도록 함
위치 : C:\Users\pushj\AppData\Local\Android\Sdk\platform-tools
클라이언트 |
안드로이드 개발 시스템에서 실행 |
서버 |
안드로이드 개발 시스템에서의 백그라운드 프로세스 |
데몬 |
에뮬레이터나 장치에서 백그라운드 프로세서로 동작하는 인스턴스 |
클라이언트 시작 시 가장 먼저 서버 프로세서가 실행중인지 점검
-> 서버 프로세스가 실행상태가 아니면 구동시킴(모든 클라이언트는 tcp 5037과 통신)
기기 연결 안 하고 켰을 때 나옴 / 맞는 화면인지 모르겠음
ADB 명령어
- 디바이스 장치 선택
- 장치 없음 에러
- -d : USB장치 / -e : 에뮬레이터 장치
- 연결 성공
- 만약 여러 장치 연결할 경우 -s 사용 : adb -s 장치이름 명령어
- 디바이스 장치 목록 : 장치가 제대로 연결되었는지 확인할 때, 선택할 때
- 아무것도 없음 : 리스트 아래 목록이 없으니 없다는 것, 원인 확인 결과
- sdk 경로 : C:\Users\pushj\AppData\Local\Android\Sdk
- 설정 변경 후 재시작
- 장치 설정 확인
- 기본 출력 목록 : 시리얼 번호 - 연결된 에뮬레이터나 장치를 구분하기 위해 장치 타입과 함께 콘솔 포트 번호를 포함, 상태 - device, off
- 디버그 기능 - logcat, bugreport, jdwp
- 로그캣을 이용한 로그 분석
- 안드로이드 장치에서 발생하는 로그 메시지를 화면으로 출력하거나 파일 형태로 저장하는 기능 제공
- 시스템 디버그 출력 정보를 확인하거나 수집하는 기능 제공
- 수집된 정보들은 각종 애플리케이션과 시스템에서 수집하는 정보들이며 사용자는 로그캣 명령어를 이용하여 메시지 확인 가능
- adb logcat
- adb shell
#logcat
- 모든 로그는 태그보다 우선순위를 가짐
- D/dalvikvm : dalvikvm 이라는 요소에서 발생한 로그 메시지라고 판단
V |
Verbose - 가장 일반적인 수준 |
D |
debug |
I |
info |
W |
Warning |
E |
Error |
F |
Fatal |
S |
Silent - 가장 높은 우선순위 |
- 로크켓옵션
-b |
로그 버퍼 확인
|
radio : radio/telephony 관련 메시지 events : 이벤트 관련 메시지 main : 메인 로그 버퍼 (기본값) |
adb logcat -b radio adb logcat -b events adb logcat -b main |
|
-c |
기록된 로그 메시지 삭제하고 종료 |
|
|
|
-d |
기록된 로그 메시지 덤프하고 종료 |
|
|
|
-f |
로그 메시지 저장, 파일명은 대상 장치의 /경로명/이름으로 작성 |
-d 옵션과 꼭 함께 사용해야 함 |
adb logcat -d -f /경로/이름 -b radio |
|
-g |
선택된 버퍼 크기를 출력하고 종료 |
|
adb logcat -g -b main(기본값) |
|
-n |
저장되는 로그 파일 개수 지정, 기본값은 4개 |
|
|
|
-r |
로그 메시지를 파일로 저장 |
|
|
|
-s |
기본 필터 종류를 S로 변경, 옵션 뒤에 필터를 입력하면 특정 로그 메시지를 확인 가능 |
|
adb logcat -s ActivityManager:I |
|
-v |
로그메시지는 메타데이터 필드와 태그, 우선순위를 가짐 |
|
|
|
- bugreport를 이용한 버그 보고서 확인 : 연결된 안드로이드 장치에 대한 정보를 한번에 출력하는 것이 목적 but 한꺼번에 너무 많은 정보 입력되기 때문에 별도의 파일로 저장 추천
dumpsys |
현재 연결된 안드로이드장치의 애플리케이션 및 장치 정보를 자세히 표기 |
meminfo, cpuinfo, account, activity 등 |
adb sheel dumpsys meminfo |
dumpstate |
현재 연결된 안드로이드 장치의 모든 사태 정보 출력 |
|
adb shell dumstate |
logcat |
안드로이드 시스템에서 발생하는 로그 정보 표시 |
|
|
- jdwp를 이용한 프로세스 정보 확인
- 연결된 안드로이드 장치에서 사용할 수 있는 프로세스 목록을 출력
- 특정 애플리케이션의 프로세스 번호를 알아내고 이를 디버거에 연결하면 디버깅을 수행할 수 있음
- 명령어 일단 수행 후 취소한 후 디버깅 대상 어플리케이션 실행 후 다시 명령어 입력
- 마지막에 추가된 프로세스 번호가 실행 애플리케이션 프로세스 번호
- 데이터 기능
install |
연결된 안드로이드 장치에서 사용자가 원하는 애플리케이션을 설치할 수 있도록 기능 제공 설치되는 어플의 확장자 명은 apk |
만약 이미 동일한 어플이 있다면 Failure [INSTALL_FAILED_ALREADY_EXISTS] 에러 출력 -r 옵션 사용 시 삭제 없이 재설치 가능 |
uninstll |
어플 삭제 대상 어플은 패키지 이름으로 삭제 |
패키지 이름 확인 방법
어플 삭제
-k : 어플 데이터는 삭제되지 않고 어플만 삭제됨 |
pull / push |
연결된 장치나 어플에서 pc로 파일을 복사하거나 파일을 장치에 붙여넣는 기능 제공 파일의 위치는 임의 변경 가능 pull : 애뮬레이터에서 pc로 붙여넣기 push : PC에서 애뮬레이터로 복사하기 |
실습을 위해 우선 애뮬레이터에 텍스트 파일 생성
adb pull /sdcard/test.txt C:\Users\pushj\Desktop\test.txt
======================================================== pc -> 애뮬레이터로 adb push C:\Users\pushj\Desktop\test2.txt /sdcard/test2.txt
|
- 포트와 네트워킹 기능
forward |
특정 로컬 포트를 안드로이드 장치의 특정 포트와 소켓 통신이 가능하도록 포워딩 해주는 기능 제공 명령어 사용하려면 대상 장치에서 USB 디버깅 옵션이 활성화 되어야 함 tcp - portnum local -unix domain socket name dev - character device name jdwp - pid |
jdwp를 이용하면 특정 어플을 대상으로 디버깅을 위한 설정 가능
|
- 스크립팅 기능
사용자에 의해 제작되는 스크립트에 연결된 자잋 시리얼 번호나 기기 정보와 같은 특정한 정보 등을 출력하는 데 사용
get-serialno |
연결된 장치의 시리얼 번호를 문자열로 출력 |
|
get-state |
연결괸 장치 문자열로 출력 |
|
wait-for-device |
연결되는 장치가 구동될 때까지 adb를 통한 명령 실행을 멈추고 device 상태가 되면 명령어 실행 |
|
- 서버 기능
abd start-server |
시작 |
adb kill-server |
종료 |
- 쉘 기능
원격 쉘 사용 가능
adb shell
'정보보안 > 안드로이드해킹' 카테고리의 다른 글
안드로이드 모의해킹) 취약한 인증 메커니즘 (0) | 2020.07.28 |
---|---|
안드로이드 모의해킹) 브로드캐스트 리시버 결함 (1) | 2020.07.28 |
안드로이드 모의해킹 ) 환경 소개 (0) | 2020.07.28 |
안드로이드 모의해킹) 기본 실행법 (0) | 2020.07.28 |
안드로이드 모의해킹 ) insecurebank 설치 시 에러 수정 (0) | 2019.12.09 |
댓글