맨위로가기

안드로이드 디버그 브리지

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

안드로이드 디버그 브리지(ADB)는 호스트 컴퓨터와 안드로이드 기기 간의 통신을 가능하게 하는 도구이다. ADB는 파일 복사, 앱 설치, 로그캣 출력 확인, 유닉스 셸 획득, 퀄컴 EDL 모드 재부팅 등의 기능을 제공하며, 안드로이드 SDK에 포함되어 있다. 안드로이드 스튜디오의 그래픽 인터페이스를 통해 ADB를 사용할 수 있으며, 안드로이드용 윈도우 하위 시스템 및 Chrome OS의 안드로이드 가상 머신에서 비공식 앱을 사이드로드하는 데 사용되기도 한다. ADB는 클라이언트-서버 아키텍처를 사용하며, 보안 취약점을 보완하기 위해 지속적으로 업데이트되고 있다.

더 읽어볼만한 페이지

  • 통신 프로토콜 - 야디스
    야디스(XRDS)는 XRI 리소스에 대한 정보를 담고 있는 XML 기반 형식으로, 서비스 발견 및 타입 발견을 위해 설계되었으며, 분산 ID 시스템에서 사용자의 ID 공급자를 찾고 관련 서비스를 연결하는 데 사용된다.
  • 통신 프로토콜 - OStatus
    OStatus는 분산형 소셜 네트워킹을 위한 연합 프로토콜로, StatusNet과 Identi.ca 간의 연동을 위해 개발되었으며, 현재는 프렌디카 등이 지원한다.
  • 안드로이드 개발 소프트웨어 - 넷빈즈
    넷빈즈는 1996년 자바 IDE 학생 프로젝트로 시작되어 썬 마이크로시스템즈를 거쳐 아파치 소프트웨어 재단에 기증된 오픈 소스 통합 개발 환경(IDE)으로, 다양한 언어를 지원하고 GUI 디자인 도구, 프로파일러 등 기능을 제공하며 자바 VM 운영체제에서 동작한다.
  • 안드로이드 개발 소프트웨어 - Eclipse (소프트웨어)
    이클립스는 IBM에서 개발한 자바 기반의 통합 개발 환경으로, OSGi 서비스 플랫폼을 런타임 아키텍처로 사용하며, 플러그인을 통해 기능을 확장할 수 있고, 이클립스 퍼블릭 라이선스를 따르며, 한국어를 지원한다.
  • 디버깅 - 스택 추적
    스택 추적은 프로그램 실행 중 함수 호출 기록을 추적하여 오류 발생 시 디버깅 및 문제 해결에 필수적인 도구로, 호출 스택의 스택 프레임을 분석하여 프로그램 실행 경로를 파악하고 오류 원인을 추적하며 프로그램 안정성을 향상시키는 기술이다.
  • 디버깅 - 메모리 디버거
    메모리 디버거는 메모리 접근, 할당, 해제를 모니터링하여 메모리 오류를 찾아내고 소프트웨어의 신뢰성을 높이는 도구이다.
안드로이드 디버그 브리지 - [IT 관련 정보]에 관한 문서
기본 정보
종류소프트웨어 개발 도구
개발자구글
안정화 버전34.0.1 (2023년 3월)
저장소android.googlesource.com
운영 체제Windows, Linux, macOS
포함안드로이드 SDK
라이선스아파치 라이선스 2.0
웹사이트Android Developers
GNOME 端末上で実行されるadb
기술 정보
프로그래밍 언어C++

2. 기능

ADB는 호스트 컴퓨터와 안드로이드 기기 간 파일 복사, 앱 설치 및 제거, 로그캣(logcat) 출력 확인, 유닉스 셸 실행, 퀄컴 EDL 모드로 재부팅, 자바 디버그 와이어 프로토콜을 이용한 디버깅 등 다양한 기능을 제공한다.[3] 예를 들어, `백업` 명령을 통해 안드로이드 응용 프로그램을 파일 형태로 저장할 수 있다.[4]

2. 1. 주요 기능

ADB의 주요 기능은 다음과 같다.[3]

  • 호스트 컴퓨터와 안드로이드 기기 간 파일 복사
  • 앱(.apk 파일) 설치, 제거 및 백업
  • logcat 출력 확인
  • 유닉스 셸 획득
  • 퀄컴 EDL 모드로 재부팅
  • 자바 디버그 와이어 프로토콜을 지원하여 앱 디버깅 수행


예를 들어, 안드로이드 응용 프로그램은 백업 명령으로 파일에 저장할 수 있다.[4] 안드로이드 스튜디오의 그래픽 안드로이드 기기 모니터를 사용하여 안드로이드 기기에서 정보를 검색할 수 있다.[6]
Android Device Monitor


APK 파일을 안드로이드 기기에 설치하는 방법은 안드로이드용 윈도우 하위 시스템 및 Chrome OS의 안드로이드 가상 머신에 비공식 앱을 사이드로드하는 방법으로 사용되었다.[7][8]

Shizuku를 사용하면 무선 네트워크에 연결된 안드로이드 폰이 자체 ADB에 연결할 수 있다. 이 애플리케이션은 Google Play 스토어에서 무료로 제공된다.[9]

2. 2. GUI 도구

안드로이드 스튜디오의 안드로이드 기기 모니터 등 그래픽 인터페이스를 통해 ADB 기능을 시각적으로 활용할 수 있다.[6]

2. 3. 활용 사례

안드로이드용 윈도우 하위 시스템 및 Chrome OS의 안드로이드 가상 머신에 비공식 앱을 사이드로딩하는 데 사용되었다.[7][8]

Shizuku를 사용하면 무선 네트워크에 연결된 안드로이드 폰이 자체 ADB에 연결할 수 있다. 이 응용 프로그램은 Google Play 스토어에서 무료로 제공된다.[9]

3. 개발 역사

ADB는 안드로이드 소프트웨어 개발 키트(SDK)와 함께 발전해 왔다. 2007년에 안드로이드 SDK와 함께 처음 출시되었고,[10] 2017년부터 구글은 ADB를 SDK와 별도로 다운로드할 수 있도록 했다.[11]

마이크로소프트는 2015년에 ADB 클라이언트에 연결 가능한 안드로이드 에뮬레이터를 출시했고,[12] 2016년에는 안드로이드 스튜디오 2.0에서 ADB를 통한 앱 설치 및 파일 전송 성능이 향상되었다.[13] 2017년에는 안드로이드 씽스를 위한 ADB 래퍼가 개발되었으며,[14] 2020년 안드로이드 11에는 ADB 증분 설치 기능이 추가되었다.[15] 같은 해 macOS용 안드로이드 스튜디오에 Wi-Fi ADB가 통합되었다.[16] 2021년 안드로이드 12에서는 `adb backup` 명령이 제한되었다.[17] 퓨시아는 ADB와 하위 호환될 예정이며, fx 및 ffx로 대체될 것이다.[19]

3. 1. 주요 이정표

연도주요 내용
2007년안드로이드 SDK와 함께 ADB가 처음 출시되었다.[10]
2015년마이크로소프트는 ADB 클라이언트에 연결 가능한 안드로이드 에뮬레이터를 출시했다.[12]
2016년안드로이드 스튜디오 2.0에서 ADB를 통한 앱 설치 및 파일 전송 성능이 향상되었다.[13]
2017년구글은 ADB를 안드로이드 SDK와 별도로 다운로드할 수 있도록 변경했다.[11] 안드로이드 씽스를 위한 ADB 래퍼가 개발되었다.[14]
2020년안드로이드 11에서 ADB 증분 설치 기능이 추가되었다.[15] macOS용 안드로이드 스튜디오에 Wi-Fi ADB가 통합되었다.[16]
2021년안드로이드 12에서 `adb backup` 명령이 제한되어, 앱별 매니페스트 구성을 통해 옵트인해야 했다.[17]
미정퓨시아는 ADB와 하위 호환될 예정이다.[19]


4. 설치 및 설정

ADB를 사용하려면 호스트 컴퓨터와 안드로이드 기기 양쪽에서 설정을 해야 한다.

4. 1. 호스트 컴퓨터 (PC)

Windows의 경우, 안드로이드 SDK에는 추출 및 설치할 수 있는 `adb.exe` 바이너리가 포함되어 있다.[20] How-To Geek은 바이너리가 포함된 폴더를 PATH 환경 변수에 추가할 것을 권장한다.[21]

Ubuntu에서는 `android-tools-adb` 패키지로 adb를 설치할 수 있다.[22] Debian의 경우, `adb` 패키지 외에 `android-sdk-platform-tools-common` 패키지도 함께 설치하는 것이 권장되는데, 이 패키지는 udev 규칙을 설치하여 루트 권한 없이도 도구를 실행할 수 있도록 해준다.[23] macOS 및 기타 리눅스 배포판의 경우, 플랫폼 도구를 다운로드하고 bashrc에서 PATH 변수를 수정할 수 있다.[24]

4. 2. 안드로이드 기기

안드로이드 4.2.2(API 레벨 17) 이상에서는 RSA 공개 키 지문이 표시되는 대화 상자가 나타나며, 사용자는 이를 수락해야 한다. 이는 기기 사용자의 동의 없이 컴퓨터가 디버깅 메커니즘을 악용하는 것을 방지한다.[25] 안드로이드 4.2부터는 개발자 설정이 기본적으로 숨겨져 있으며, 정보 메뉴에서 빌드 번호를 일곱 번 누르면 사용자에게 표시된다. 그 후, USB 디버깅 옵션을 활성화할 수 있다.[26] 일부 안드로이드 제조업체는 이를 활성화하는 다른 절차를 가지고 있다. 예를 들어, 화웨이는 ADB를 활성화하기 전에 핀 코드를 입력해야 한다.

만약 안드로이드 기기의 터치스크린이 고장난 경우, USB OTG를 사용하여 기기에 마우스를 연결하고 USB 디버깅을 활성화할 수 있다.[27][28]

5. 아키텍처

ADB는 클라이언트-서버 구조를 가지며, USB 또는 와이파이를 통해 TCP로 전송될 수 있다.[5]

5. 1. 프로토콜

ADB 프로토콜은 클라이언트-서버 구조를 가지며, USB 또는 와이파이를 통해 TCP로 전송될 수 있다. 클라이언트와 서버 간 프로토콜, 서버와 데몬 간 프로토콜, 이렇게 두 가지 프로토콜이 사용된다. ADB 데몬은 C로 구현되어 안드로이드 사용자 공간에 위치하며, 안드로이드 USB 프레임워크, `UsbDeviceManager`, `UsbDebuggingManager`에 의해 지원된다.[5]

클라이언트-서버 간 통신은 TCP 소켓을 이용한다. 서버는 클라이언트 요청을 수신 대기하는 포트를 가진다. 요청은 ASCII 형식의 4바이트 초기 필드와 페이로드를 포함하며, 페이로드는 "host"로 시작하여 서버로 전송됨을 나타낸다. 서버는 OKAY 또는 FAIL로 응답하여 상태를 나타내고, 선택적으로 페이로드와 길이를 함께 보낼 수 있다.[5]

서버-데몬 간 메시지는 24바이트 길이의 헤더로 구성되며, 다음 필드를 포함한다.[5]

필드설명
명령명령어
첫 번째 인수첫 번째 인수
두 번째 인수두 번째 인수
페이로드 길이0 이상의 페이로드 길이
CRC-32데이터 페이로드의 CRC-32
매직 값명령 XOR `0xFFFFFFFF`로 계산된 매직 값


5. 2. 안드로이드 시스템 구성

ADB 데몬은 C로 구현되었으며 안드로이드 사용자 공간에 위치한다. 이 데몬은 안드로이드 USB 프레임워크, `UsbDeviceManager` 및 `UsbDebuggingManager`에 의해 지원된다.[5]

6. 보안

ADB는 편리한 기능과 함께 보안 취약점도 가지고 있다. ADB.Miner, Ares, IPStorm, Fbot 및 Trinity와 같은 다양한 종류의 악성 코드가 인터넷에 공개된 adb 인터페이스를 통해 악성 코드를 설치하는 사례가 보고되었다.[31] ADB는 안전 모드로 부팅한 후 adb uninstall 명령을 사용하여 악성 코드를 제거하는 데에도 사용될 수 있다.[32]

6. 1. 과거 취약점

안드로이드 2.2까지 안드로이드는 ''RageAgainstTheCage'' 익스플로잇에 취약했다. adb 데몬은 권한 강등 시 setuid 시스템 호출의 반환 값을 확인하지 않았다. 익스플로잇은 프로세스 식별자가 소진될 때까지 프로세스를 fork한다. 데몬이 충돌하고 다시 시작되면, 권한이 강등된 새 프로세스를 시작할 수 없으며, 계속 root로 실행된다. 그 후 adb는 root 셸을 제공했다.[29] 2017년에는 ADB를 악용하여 온보드 모뎀을 장악하는 보안 취약점이 공개되었다. 이 공격은 adb가 이미 활성화되고 승인되어야 했지만, 몇 가지 해결 방법이 있었다.[30]

6. 2. 악성코드 감염 위험

ADB.Miner, Ares, IPStorm, Fbot, Trinity와 같은 다양한 종류의 악성 코드는 인터넷에 공개된 ADB 인터페이스를 통해 악성 코드를 설치하는 사례가 보고되었다.[31] ADB는 안전 모드로 부팅한 후 adb uninstall 명령을 사용하여 악성 코드를 제거하는 데에도 사용될 수 있다.[32]

6. 3. 보안 강화 노력

안드로이드 4.2.2부터는 RSA 공개 키 지문 확인을 통해 허가되지 않은 컴퓨터의 접근을 방지하는 기능이 도입되었다.[29] 안드로이드 12부터는 사용자 데이터 백업(`adb backup`) 기능이 앱별 매니페스트 구성을 통해서만 허용되도록 제한되었다.[30]

ADB.Miner, Ares, IPStorm, Fbot, Trinity와 같은 다양한 종류의 악성 코드는 인터넷에 공개된 adb 인터페이스를 스캔하여 악성 코드를 설치했다.[31] 이러한 악성 코드는 안전 모드로 부팅한 후 `adb uninstall` 명령을 실행하여 제거할 수 있다.[32]

지속적인 보안 업데이트와 사용자의 주의를 통해 ADB 관련 보안 위협을 최소화하는 것이 중요하다.

참조

[1] 서적 Android wireless application development https://www.worldcat[...] Addison-Wesley 2021-09-26
[2] 웹사이트 Things You Can Do with Android's adb Command https://www.dummies.[...] 2021-09-09
[3] 서적 An In-Depth Guide to Mobile Device Forensics https://www.worldcat[...] CRC PRESS 2021-09-26
[4] 웹사이트 How to create a full backup of your Android device without root https://www.techrepu[...] 2016-01-29
[5] 서적 Unboxing Android USB: a hands-on approach with real World examples https://www.worldcat[...] 2021-09-26
[6] 서적 Learning embedded Android N programming: create the perfectly customized system by unleashing the power of Android OS on your embedded device https://books.google[...] 2021-09-26
[7] 웹사이트 How to sideload Android apps on Windows 11 https://www.xda-deve[...] 2022-01-23
[8] 웹사이트 How to sideload apps to a Chromebook https://www.xda-deve[...] 2023-03-05
[9] 웹사이트 "User manual {{!}} Shizuku" https://shizuku.rikk[...] 2024-07-19
[10] 웹사이트 Google releases Android SDK https://www.macworld[...] 2021-09-10
[11] 웹사이트 Google makes ADB, fastboot, and other platform tools available without full SDK or Android Studio download https://www.androidp[...] 2021-09-09
[12] 웹사이트 Microsoft Releases Android Emulator and It's Supposed to Be Faster than Google's https://news.softped[...] 2021-09-10
[13] 웹사이트 Android Studio 2.0 - Beta https://android-deve[...] 2021-09-10
[14] 웹사이트 Android Things Developer Preview 6 https://android-deve[...] 2021-09-10
[15] 웹사이트 Turning it up to 11: Android 11 for developers https://android-deve[...] 2021-09-10
[16] 웹사이트 Announcing Android Studio Arctic Fox (2020.3.1) & Android Gradle plugin 7.0 https://android-deve[...] 2021-09-10
[17] 웹사이트 'Behavior changes: Apps targeting Android 12 {{!}} Android 12 Beta' https://developer.an[...] 2021-09-28
[18] 웹사이트 Google Considers Removing Android ADB Backup and Restore https://www.bleeping[...]
[19] 웹사이트 Google wants to make Fuchsia devices manageable with Android's ADB tool https://9to5google.c[...] 2022-08-29
[20] 서적 PhoneGap build: developing cross platform mobile applications in the cloud https://www.worldcat[...] 2022-01-29
[21] 웹사이트 How to Install and Use ADB, the Android Debug Bridge Utility https://www.howtogee[...] 2021-09-09
[22] 서적 "Android Studio 4. 0 Development Essentials - Java Edition: Developing Android Apps Using Android Studio 4. 0, Java and Android Jetpack." https://www.worldcat[...] 2021-09-26
[23] 웹사이트 Debian -- Details of package adb in bullseye https://packages.deb[...] 2021-09-08
[24] 웹사이트 How to Install Android Debug Bridge (ADB) and Fastboot https://www.lifewire[...] 2022-01-18
[25] 웹사이트 Run apps on a hardware device https://developer.an[...] 2021-09-08
[26] 웹사이트 How to enable Developer options in Android 4.2 https://www.techrepu[...] 2021-09-09
[27] 웹사이트 How to enable USB debugging mode on Android https://punchng.com/[...] 2021-09-09
[28] 웹사이트 Come attivare debug USB https://www.aranzull[...] 2021-09-09
[29] 서적 Android hacker's handbook https://www.worldcat[...] Wiley 2021-09-26
[30] 웹사이트 Google plugs severe Android vulnerability that exposed devices to spying https://arstechnica.[...] 2021-09-10
[31] 웹사이트 Android devices ensnared in DDoS botnet https://www.zdnet.co[...] 2021-09-10
[32] 뉴스 This Vultur app takes malicious to the next level https://www.computer[...] Computerworld 2021-09-10
[33] 웹사이트 'Android Debug Bridge(adb) {{!}} Android デベロッパー' https://developer.an[...] 2022-02-28



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com