본문으로 이동

안드로이드 디버그 브리지

한울위키, 우리 모두의 백과사전.
안드로이드 디버그 브리지
원저자구글
안정화 버전
34.0.1 (2023년 3월)
저장소android.googlesource.com
프로그래밍 언어C++
엔진
    모듈:EditAtWikidata 29번째 줄에서 Lua 오류: attempt to index field 'wikibase' (a nil value).
    운영 체제Windows, Linux, macOS
    기본 포함안드로이드 SDK
    종류소프트웨어 개발 도구
    라이선스아파치 라이선스 2.0
    웹사이트developer.android.com/studio/command-line/adb

    안드로이드 디버그 브리지(Android Debug Bridge)는 안드로이드 기반 기기들의 디버깅에 사용되는 프로그래밍 도구이다. 안드로이드 장치의 데몬USBTCP를 통해 호스트 PC의 서버에 연결하며, TCP를 통해 최종 사용자에 의해 사용되는 클라이언트에 연결된다. 2007년부터 구글아파치 라이선스오픈 소스 소프트웨어로 배포하고 있으며 셸을 내장하고 있고 백업도 가능하다. adb 소프트웨어는 마이크로소프트 윈도우, 리눅스, macOS와 호환된다. 봇넷 및 기타 악성 소프트웨어에 의해 악용되었으며, 이를 위해 RSA 인증 및 장치 화이트리스팅과 같은 완화 조치가 개발되었다.

    기능

    섬네일을 만드는 중 오류 발생:
    안드로이드 장치 모니터

    adb의 기능에는 호스트 컴퓨터에서 파일 복사,[1] 앱 설치, logcat 출력 보기, 유닉스 셸 가져오기,[2] 퀄컴 EDL 모드로 재부팅 등이 있다.[3] 예를 들어, 안드로이드 애플리케이션백업 명령을 사용하여 파일로 저장할 수 있다.[4] 또한 자바 디버그 와이어 프로토콜에 대한 지원도 포함된다.[5]

    일부 그래픽 사용자 인터페이스도 제공되었다. 안드로이드 스튜디오의 그래픽 안드로이드 장치 모니터는 안드로이드 장치에서 정보를 검색하는 데 사용할 수 있다.[6]

    안드로이드 장치에 APK 파일을 설치하는 안드로이드의 방식은 Windows Subsystem for Android[7] 및 크롬 OS의 안드로이드 가상 머신에 비공식 앱을 사이드로드하는 방법으로 사용되었다.[8]

    Shizuku를 사용하면 안드로이드 전화가 무선 네트워크에 연결되었을 때 자체 ADB에 연결할 수 있다. 이 애플리케이션은 구글 플레이 스토어에서 무료로 사용할 수 있다.[9]

    개발 역사

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

    2015년 마이크로소프트는 adb 클라이언트에 연결할 수 있는 안드로이드 에뮬레이터를 출시했다.[12] 2016년 안드로이드 스튜디오 2.0에서는 adb를 통한 앱 설치 및 파일 푸시 성능이 5배 향상되었다.[13] 2017년 안드로이드 씽스의 사용 편의성을 위해 수동 adb 명령을 래핑하는 래퍼가 만들어졌다.[14] 2020년 안드로이드 11에서는 adb 점진적 설치 기능이 추가되었다.[15] 2020년 macOS용 안드로이드 스튜디오에 Wi-Fi adb가 통합되었다.[16] 2021년 안드로이드 12에서는 adb backup 명령이 제한되어 앱의 사용자 데이터 백업이 앱별 매니페스트 구성을 통해 옵트인 방식으로 이루어지도록 변경되었다.[17] 이는 안드로이드 10에서 adb restore와 함께 사용 중단된 이후의 조치이다.[18] 구글 퓨시아는 adb와 하위 호환성을 가질 예정이다. adb는 fx와 ffx로 대체될 것이다.[19]

    설정

    호스트 컴퓨터

    윈도우의 경우 안드로이드 SDK에 adb.exe 바이너리가 포함되어 있으며, 이를 추출하여 설치할 수 있다.[20] 하우투긱은 바이너리가 포함된 폴더를 PATH 환경 변수에 추가할 것을 권장한다.[21]

    우분투에서는 android-tools-adb 패키지를 통해 adb를 설치할 수 있다.[22] 데비안의 경우, adb 패키지 옆에 android-sdk-platform-tools-common 패키지도 설치하여 Udev 규칙을 적용하면 루트 권한 없이 도구를 실행할 수 있도록 권장된다.[23] macOS 및 다른 리눅스 배포판에서는 플랫폼 도구를 다운로드하고 bashrc에서 PATH 변수를 수정할 수 있다.[24]

    안드로이드 장치

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

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

    아키텍처

    adb 프로토콜은 USB 또는 TCP를 통해 와이파이로 전송될 수 있다. 클라이언트-서버 아키텍처를 사용한다. 사용되는 두 가지 다른 프로토콜이 있다. 첫 번째는 클라이언트와 서버 간이고, 두 번째는 서버와 데몬 간이다. adb 데몬은 C로 구현되었으며 안드로이드 사용자 공간에 위치한다. 데몬은 안드로이드 USB 프레임워크인 UsbDeviceManagerUsbDebuggingManager에 의해 지원된다.[5]

    클라이언트 ↔ 서버 프로토콜

    클라이언트와 서버 간의 통신 모드는 TCP 소켓이다. 서버는 포트에서 수신 대기하며, 클라이언트는 이 포트로 요청을 보내야 한다. 요청에는 4바이트 ASCII 초기 필드와 페이로드가 포함된다. 페이로드는 서버로 전송되어야 함을 나타내기 위해 host라는 단어로 시작한다. 그러면 서버는 상태를 나타내는 OKAY 또는 FAIL로 응답할 수 있으며, 선택적 페이로드 및 길이와 함께 제공될 수 있다.[5]

    서버 ↔ 데몬 프로토콜

    서버에서 전송되는 메시지는 다음과 같은 필드를 가진 24바이트 길이의 헤더로 구성된다.[5]

    • 명령
    • 첫 번째 인수
    • 두 번째 인수
    • 페이로드 길이, 0 이상
    • 데이터 페이로드의 CRC-32
    • 매직 값, 명령 XOR 0xFFFFFFFF를 통해 계산됨

    보안

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

    ADB.Miner, Ares, IPStorm, Fbot, Trinity와 같은 다양한 악성 소프트웨어군은 인터넷에서 adb 인터페이스의 공개 가용성을 스캔하고 해당 장치에 악성 소프트웨어를 설치했다.[31] adb는 안전 모드로 부팅하고 adb uninstall 명령을 실행하여 악성 소프트웨어를 제거하는 데도 사용될 수 있다.[32]

    각주

    1. Darcey, Lauren (2012). 《Android wireless application development》 3판. Shane Conder. Upper Saddle River, NJ: Addison-Wesley. ISBN 978-0-321-81383-1. OCLC 749852462. 
    2. “Things You Can Do with Android's adb Command” (영어). 《천재반》. 2018년 5월 15일에 원본 문서에서 보존된 문서. 2021년 9월 9일에 확인함. 
    3. EASTTOM, CHUCK (2021). 《An In-Depth Guide to Mobile Device Forensics》. [S.l.]: CRC PRESS. 72쪽. ISBN 978-0-367-63300-4. OCLC 1250310301. 
    4. Jack Wallen (2015년 3월 6일). “How to create a full backup of your Android device without root”. 2016년 1월 24일에 원본 문서에서 보존된 문서. 2016년 1월 29일에 확인함. 
    5. Regupathy, Rajaram (2014). 《Unboxing Android USB: a hands-on approach with real World examples》. Berkeley, CA. ISBN 978-1-4302-6209-1. OCLC 880673864. 
    6. Morgillo, Ivan; Viola, Stefano (2016). 《Learning embedded Android N programming: create the perfectly customized system by unleashing the power of Android OS on your embedded device》. Birmingham, UK. 89쪽. ISBN 9781785283284. OCLC 1020708322. 2021년 9월 26일에 원본 문서에서 보존된 문서. 2021년 9월 26일에 확인함. 
    7. “How to sideload Android apps on Windows 11”. 2022년 1월 23일. 
    8. “How to sideload apps to a Chromebook”. 2023년 3월 5일. 
    9. “User manual | Shizuku”. 《shizuku.rikka.app》. 2024년 7월 19일에 확인함. 
    10. “Google releases Android SDK” (미국 영어). 《Macworld》. 2021년 9월 10일에 원본 문서에서 보존된 문서. 2021년 9월 10일에 확인함. 
    11. “Google makes ADB, fastboot, and other platform tools available without full SDK or Android Studio download” (미국 영어). 《Android Police》. 2017년 1월 5일. 2021년 4월 10일에 원본 문서에서 보존된 문서. 2021년 9월 9일에 확인함. 
    12. Vasile, Cosmin (2015년 7월 29일). “Microsoft Releases Android Emulator and It's Supposed to Be Faster than Google's” (영어). 《소프트피디아》. 2021년 9월 10일에 원본 문서에서 보존된 문서. 2021년 9월 10일에 확인함. 
    13. “Android Studio 2.0 - Beta” (영어). 《Android Developers Blog》. 2021년 9월 10일에 원본 문서에서 보존된 문서. 2021년 9월 10일에 확인함. 
    14. “Android Things Developer Preview 6” (영어). 《Android Developers Blog》. 2021년 9월 10일에 원본 문서에서 보존된 문서. 2021년 9월 10일에 확인함. 
    15. “Turning it up to 11: Android 11 for developers” (영어). 《Android Developers Blog》. 2021년 9월 17일에 원본 문서에서 보존된 문서. 2021년 9월 10일에 확인함. 
    16. “Announcing Android Studio Arctic Fox (2020.3.1) & Android Gradle plugin 7.0” (영어). 《Android Developers Blog》. 2021년 9월 12일에 원본 문서에서 보존된 문서. 2021년 9월 10일에 확인함. 
    17. “Behavior changes: Apps targeting Android 12 | Android 12 Beta” (영어). 《Android Developers》. 2021년 9월 28일에 원본 문서에서 보존된 문서. 2021년 9월 28일에 확인함. 
    18. “Google Considers Removing Android ADB Backup and Restore”. 
    19. Bradshaw, Kyle (2022년 8월 26일). “Google wants to make Fuchsia devices manageable with Android's ADB tool” (미국 영어). 《9to5Google. 2022년 8월 29일에 확인함. 
    20. Harwani, B. M. (2013). 《PhoneGap build: developing cross platform mobile applications in the cloud》. Boca Raton. 38쪽. ISBN 978-1-4665-8975-9. OCLC 862745697. 
    21. Hoffman, Chris; Fedewa, Joe (2021년 9월 4일). “How to Install and Use ADB, the Android Debug Bridge Utility” (미국 영어). 《How-To Geek》. 2021년 9월 18일에 원본 문서에서 보존된 문서. 2021년 9월 9일에 확인함. 
    22. Smyth, Neil (2020). 〈7〉. 《Android Studio 4. 0 Development Essentials - Java Edition: Developing Android Apps Using Android Studio 4. 0, Java and Android Jetpack.》. Cary. ISBN 978-1-951442-21-7. OCLC 1190906409. 
    23. “Debian -- Details of package adb in bullseye”. 《packages.debian.org》. 2021년 9월 8일에 원본 문서에서 보존된 문서. 2021년 9월 8일에 확인함. 
    24. “How to Install Android Debug Bridge (ADB) and Fastboot” (영어). 《Lifewire》. 2022년 1월 30일에 원본 문서에서 보존된 문서. 2022년 1월 18일에 확인함. 
    25. “Run apps on a hardware device” (영어). 《Android Developers》. 2021년 9월 8일에 원본 문서에서 보존된 문서. 2021년 9월 8일에 확인함. 
    26. Wallen, Jack. “How to enable Developer options in Android 4.2” (영어). 《TechRepublic》. 2021년 9월 9일에 원본 문서에서 보존된 문서. 2021년 9월 9일에 확인함. 
    27. Ogubuike, Udochi (2019년 8월 9일). “How to enable USB debugging mode on Android” (미국 영어). 《더 펀치》. 2019년 9월 17일에 원본 문서에서 보존된 문서. 2021년 9월 9일에 확인함. 
    28. Aranzulla, Salvatore. “Come attivare debug USB” (이탈리아어). 《Salvatore Aranzulla》. 2021년 9월 9일에 원본 문서에서 보존된 문서. 2021년 9월 9일에 확인함. 
    29. Drake, Joshua J. (2014). 《Android hacker's handbook》. Zach Lanier, Collin Mulliner, Pau Oliva, Stephen A. Ridley, Georg Wicherski. Indianapolis, IN: Wiley. 75쪽. ISBN 978-1-118-60861-6. OCLC 875820167. 
    30. Mendelsohn, Tom (2017년 1월 9일). “Google plugs severe Android vulnerability that exposed devices to spying” (미국 영어). 《아르스 테크니카》. 2021년 9월 10일에 원본 문서에서 보존된 문서. 2021년 9월 10일에 확인함. 
    31. Cimpanu, Catalin. “Android devices ensnared in DDoS botnet” (영어). 《ZDNet》. 2021년 9월 10일에 원본 문서에서 보존된 문서. 2021년 9월 10일에 확인함. 
    32. Schuman, Evan. “This Vultur app takes malicious to the next level” (영어). 《컴퓨터월드》. 2021년 9월 10일에 원본 문서에서 보존된 문서. 2021년 9월 10일에 확인함. 

    외부 링크