Android Debug Bridge

Android Debug Bridge
Thiết kế bởiGoogle
Phiên bản ổn định
34.0.1 (March 2023)
Kho mã nguồnandroid.googlesource.com
Viết bằngC++
Hệ điều hànhWindows, Linux, macOS
Đã bao gồm trongAndroid SDK
Thể loạiSoftware development tool
Giấy phépApache License 2.0
Websitedeveloper.android.com/studio/command-line/adb

Android Debug Bridge (tạm dịch: Cầu gỡ lỗi Android) (thường được viết tắt là adb) là một công cụ lập trình sử dụng cho việc gỡ lỗi các thiết bị dựa trên nền tảng Android. Phương thức trình nền (Daemon) trên thiết bị Android kết nối với máy chủ trên PC chủ qua USB hoặc TCP kết nối với máy khách được người dùng cuối sử dụng qua TCP. Được cung cấp dưới dạng Phần mềm nguồn mở theo Giấy phép Apache của Google từ năm 2007, các tính năng bao gồm shell và khả năng tạo bản sao lưu.. Phần mềm adb tương thích với Windows, LinuxmacOS. Nó đã bị lạm dụng bởi botnets và các Phần mềm độc hại, trong đó các biện pháp giảm thiểu đã được phát triển như xác thực RSA và danh sách trắng.

Tính năng nổi bật

Android Device Monitor

Các tính năng của adb bao gồm sao chép tệp từ máy tính chủ,[1] cài đặt ứng dụng, xem đầu ra logcat, tải Unix shell,[2] và khởi động lại để vào chế độ Qualcomm EDL mode.[3] Lấy ví dụ, gói ứng dụng Android có thể được lưu bằng lệnh backup để tạo thành một tệp.[4] ADB cũng hỗ trợ bao gồm Java Debug Wire Protocol.[5]

Một số giao diện đồ họa cũng được cung cấp. Giao diện từ phần mền Android Device Monitor trong Android Studio có thể được sử dụng để truy xuất thông tin từ thiết bị Android.[6]

Lịch sử phát triển

Bộ công cụ phát triển phần mềm Android (SDK) được phát hành lần đầu tiên vào năm 2007.[7] Kể từ năm 2017, Google đã cho phép tải xuống adb một cách riêng biệt từ SDK Android.[8]

Vào năm 2015, Microsoft đã phát hành trình giả lập Android có thể kết nối với ứng dụng khách adb (adb client).[9] Vào năm 2016 Android Studio 2.0 đã cải thiện hiệu suất gấp 5 lần để cài đặt ứng dụng và đẩy tệp qua adb.[10] Để sử dụng Android Things dễ dàng hơn, , một trình bao bọc (wrapper) đã được tạo vào năm 2017 xung quanh các lệnh adb thủ công.[11] Đối với Android 11 vào năm 2020, Google đã thêm adb incremental installations.[12] Cũng vào năm 2020, Wi-Fi adb đã được tích hợp vào Android Studio dành cho macOS.[13] Vào năm 2021, đối với Android 12, Lệnh adb backup đã bị giới hạn để việc sao lưu dữ liệu người dùng từ các ứng dụng được chọn tham gia bằng cách sử dụng cấu hình bản kê khai cho mỗi ứng dụng.[14] Fuchsia sẽ tương thích ngược với adb. nó sẽ thay thế bằng fx và ffx.[15]

Thiết lập

Máy tính chủ

Đối với Windows, SDK Android chứa tệp nhị phân adb.exe có thể được giải nén và cài đặt.[16] How-To Geek khuyên bạn nên thêm thư mục chứa các tệp nhị phân vào biến môi trường PATH [17]

Trên Ubuntu, adb có thể được cài đặt cùng với android-tools-adb package.[18] Đối với Debian, khuyến khích bạn cài gói android-sdk-platform-tools-common bên cạnh gói adb, cài đặt các quy tắc udev giúp bạn có thể chạy công cụ mà không cần quyền root.[19] Với macOS và các họ hệ điều hành Linux, bạn có thể tải xuống các công cụ nền tảng và biến PATH có thể được sửa đổi trong bashrc.[20]

Thiết bị Android

Từ hệ điều hành Android 4.2.2 trở đi (API level 17), một hộp thoại được hiển thị với dấu vân tay RSA mà người dùng cần phải chấp nhận. các máy tính khai thác cơ chế gỡ lỗi mà không có sự đồng ý của người dùng thiết bị.[21] Bắt đầu từ Android 4.2, cài đặt dành cho nhà phát triển được ẩn theo mặc định. Nhấn bảy lần vào số bản dựng trong menu giới thiệu về điện thoại sẽ khiến tùy chọn nhà phát triển hiển thị ra cho người dùng.Sau đó bạn có thể bật gỡ lỗi adb trong cài đặt cho nhà phát triển.[22] Một số nhà cung cấp Android có các quy trình khác nhau để kích hoạt nó. Ví dụ: Huawei yêu cầu nhập mã pin trước khi có thể bật adb.[23]

Nếu Màn hình cảm ứng của thiết bị Android bị hỏng, bạn có thể kết nối chuột với thiết bị bằng USB On-The-Go và bật gỡ lỗi USB.[23][24]

Kiến trúc

Giao thức adb có thể được truyền qua USB hoặc qua Wi-Fi thông qua TCP. It uses a kiến ​​trúc máy khách-máy chủ. Có hai giao thức khác nhau được sử dụng. Đầu tiên là giữa máy khách và máy chủ và thứ hai là giữa máy chủ và daemon. Adb daemon được triển khai trong C à nằm trong không gian người dùng Android. Daemon được hỗ trợ bởi Android USB framework, UsbDeviceManagerUsbDebuggingManager.[5]

Máy khách ↔ giao thức máy chủ

Chế độ giao tiếp giữa máy khách và máy chủ là một TCP socket. Máy chủ lắng nghe trên một cổng mà máy khách phải gửi yêu cầu. Yêu cầu chứa trường ban đầu 4 byte trong ASCII và payload. Payload bắt đầu bằng từ máy chủ,để cho biết nó sẽ được gửi đến máy chủ. Sau đó, máy chủ có thể trả lời bằng OKAY hoặc FAIL để cho biết trạng thái, kết hợp với payload và độ dài tùy chọn.[5]

Máy chủ ↔ giao thức daemon

Các tin nhắn được gửi từ máy chủ bao gồm một tiêu đề dài 24 byte, với các trường sau:[5]

  • Lệnh
  • Argument đầu tiên
  • Argument thứ hai
  • Độ dài của payload, 0 hoặc cao hơn
  • CRC32 của payload đó
  • Magic value, được tính thông qua lệnh XOR 0xFFFFFFFF

Bảo mật

Cho đến phiên bản Android 2.2, Android vẫn dễ bị khai thác RageAgainstTheCage . Adb daemon không kiểm tra giá trị trả về Lời gọi hệ thống setuid khi mà từ bỏ đặc quyền. Khai thác tiến trình forks cho đến khi nó thất bại do cạn kiệt số nhận dạng quy trình. Khi mà daemon gặp sự cố và khởi động lại, nó không thể bắt đầu một quy trình mới với các đặc quyền bị mất và tiếp tục chạy với quyền root. adb cung cấp một root shell.[25] Sau đó, adb đã cung cấp trình bao gốc. [25] Vào năm 2017, một lỗ hổng bảo mật đã được tiết lộ đã khai thác ADB để chiếm lấy modem tích hợp. Cuộc tấn công yêu cầu adb phải được kích hoạt và cấp quyền, mặc dù đã có sẵn một số cách giải quyết.[26]

Nhiều dòng phần mềm độc hại khác nhau như ADB.Miner, Ares, IPStorm, Fbot and Trinity đã quét internet để tìm tính khả dụng công khai của giao diện adb và cài đặt phần mềm độc hại trên các thiết bị đó.[27] adb cũng có thể dùng để gỡ Phần mềm độc hại, bằng cách khởi động vào chế độ safe mode và chạy dòng lệnh adb uninstall.[28]

Xem thêm

Tài liệu tham khảo

  1. ^ Darcey, Lauren (2012). Android wireless application development. Shane Conder (ấn bản thứ 3). Upper Saddle River, NJ: Addison-Wesley. ISBN 978-0-321-81383-1. OCLC 749852462. Lưu trữ bản gốc ngày 26 tháng 9 năm 2021. Truy cập ngày 26 tháng 9 năm 2021.
  2. ^ “Things You Can Do with Android's adb Command”. For Dummies (bằng tiếng Anh). Lưu trữ bản gốc ngày 15 tháng 5 năm 2018. Truy cập ngày 9 tháng 9 năm 2021.
  3. ^ EASTTOM, CHUCK (2021). An In-Depth Guide to Mobile Device Forensics. [S.l.]: CRC PRESS. tr. 72. ISBN 978-0-367-63300-4. OCLC 1250310301. Lưu trữ bản gốc ngày 26 tháng 9 năm 2021. Truy cập ngày 26 tháng 9 năm 2021.
  4. ^ Jack Wallen (ngày 6 tháng 3 năm 2015). “How to create a full backup of your Android device without root”. Lưu trữ bản gốc ngày 24 tháng 1 năm 2016. Truy cập ngày 29 tháng 1 năm 2016.
  5. ^ a b c d Regupathy, Rajaram (2014). Unboxing Android USB: a hands-on approach with real World examples. Berkeley, CA. ISBN 978-1-4302-6209-1. OCLC 880673864. Lưu trữ bản gốc ngày 26 tháng 9 năm 2021. Truy cập ngày 26 tháng 9 năm 2021.
  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. tr. 89. ISBN 9781785283284. OCLC 1020708322. Lưu trữ bản gốc ngày 26 tháng 9 năm 2021. Truy cập ngày 26 tháng 9 năm 2021.
  7. ^ “Google releases Android SDK”. Macworld (bằng tiếng Anh). Lưu trữ bản gốc ngày 10 tháng 9 năm 2021. Truy cập ngày 10 tháng 9 năm 2021.
  8. ^ “Google makes ADB, fastboot, and other platform tools available without full SDK or Android Studio download”. Android Police (bằng tiếng Anh). ngày 5 tháng 1 năm 2017. Lưu trữ bản gốc ngày 10 tháng 4 năm 2021. Truy cập ngày 9 tháng 9 năm 2021.
  9. ^ Vasile, Cosmin. “Microsoft Releases Android Emulator and It's Supposed to Be Faster than Google's”. Softpedia (bằng tiếng english). Lưu trữ bản gốc ngày 10 tháng 9 năm 2021. Truy cập ngày 10 tháng 9 năm 2021.Quản lý CS1: ngôn ngữ không rõ (liên kết)
  10. ^ “Android Studio 2.0 - Beta”. Android Developers Blog (bằng tiếng Anh). Lưu trữ bản gốc ngày 10 tháng 9 năm 2021. Truy cập ngày 10 tháng 9 năm 2021.
  11. ^ “Android Things Developer Preview 6”. Android Developers Blog (bằng tiếng Anh). Lưu trữ bản gốc ngày 10 tháng 9 năm 2021. Truy cập ngày 10 tháng 9 năm 2021.
  12. ^ “Turning it up to 11: Android 11 for developers”. Android Developers Blog (bằng tiếng Anh). Lưu trữ bản gốc ngày 17 tháng 9 năm 2021. Truy cập ngày 10 tháng 9 năm 2021.
  13. ^ “Announcing Android Studio Arctic Fox (2020.3.1) & Android Gradle plugin 7.0”. Android Developers Blog (bằng tiếng Anh). Lưu trữ bản gốc ngày 12 tháng 9 năm 2021. Truy cập ngày 10 tháng 9 năm 2021.
  14. ^ “Behavior changes: Apps targeting Android 12 | Android 12 Beta”. Android Developers (bằng tiếng Anh). Lưu trữ bản gốc ngày 28 tháng 9 năm 2021. Truy cập ngày 28 tháng 9 năm 2021.
  15. ^ Bradshaw, Kyle (ngày 26 tháng 8 năm 2022). “Google wants to make Fuchsia devices manageable with Android's ADB tool”. 9to5Google (bằng tiếng Anh). Truy cập ngày 29 tháng 8 năm 2022.
  16. ^ Harwani, B. M. (2013). PhoneGap build: developing cross platform mobile applications in the cloud. Boca Raton. tr. 38. ISBN 978-1-4665-8975-9. OCLC 862745697. Lưu trữ bản gốc ngày 7 tháng 3 năm 2022. Truy cập ngày 29 tháng 1 năm 2022.
  17. ^ Hoffman, Chris; Fedewa, Joe (ngày 4 tháng 9 năm 2021). “How to Install and Use ADB, the Android Debug Bridge Utility”. How-To Geek (bằng tiếng Anh). Lưu trữ bản gốc ngày 18 tháng 9 năm 2021. Truy cập ngày 9 tháng 9 năm 2021.
  18. ^ 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. Lưu trữ bản gốc ngày 26 tháng 9 năm 2021. Truy cập ngày 26 tháng 9 năm 2021.
  19. ^ “Debian -- Details of package adb in bullseye”. packages.debian.org. Lưu trữ bản gốc ngày 8 tháng 9 năm 2021. Truy cập ngày 8 tháng 9 năm 2021.
  20. ^ “How to Install Android Debug Bridge (ADB) and Fastboot”. Lifewire (bằng tiếng Anh). Lưu trữ bản gốc ngày 30 tháng 1 năm 2022. Truy cập ngày 18 tháng 1 năm 2022.
  21. ^ “Run apps on a hardware device”. Android Developers (bằng tiếng Anh). Lưu trữ bản gốc ngày 8 tháng 9 năm 2021. Truy cập ngày 8 tháng 9 năm 2021.
  22. ^ Wallen, Jack. “How to enable Developer options in Android 4.2”. TechRepublic (bằng tiếng Anh). Lưu trữ bản gốc ngày 9 tháng 9 năm 2021. Truy cập ngày 9 tháng 9 năm 2021.
  23. ^ a b Aranzulla, Salvatore. “Come attivare debug USB”. Salvatore Aranzulla (bằng tiếng Ý). Lưu trữ bản gốc ngày 9 tháng 9 năm 2021. Truy cập ngày 9 tháng 9 năm 2021.
  24. ^ Ogubuike, Udochi (ngày 9 tháng 8 năm 2019). “How to enable USB debugging mode on Android”. The Punch (bằng tiếng Anh). Lưu trữ bản gốc ngày 17 tháng 9 năm 2019. Truy cập ngày 9 tháng 9 năm 2021.
  25. ^ Drake, Joshua J. (2014). Android hacker's handbook. Zach Lanier, Collin Mulliner, Pau Oliva, Stephen A. Ridley, Georg Wicherski. Indianapolis, IN: Wiley. tr. 75. ISBN 978-1-118-60861-6. OCLC 875820167. Lưu trữ bản gốc ngày 26 tháng 9 năm 2021. Truy cập ngày 26 tháng 9 năm 2021.
  26. ^ Mendelsohn, Tom (ngày 9 tháng 1 năm 2017). “Google plugs severe Android vulnerability that exposed devices to spying”. Ars Technica (bằng tiếng Anh). Lưu trữ bản gốc ngày 10 tháng 9 năm 2021. Truy cập ngày 10 tháng 9 năm 2021.
  27. ^ Cimpanu, Catalin. “Android devices ensnared in DDoS botnet”. ZDNet (bằng tiếng Anh). Lưu trữ bản gốc ngày 10 tháng 9 năm 2021. Truy cập ngày 10 tháng 9 năm 2021.
  28. ^ Schuman, Evan. “This Vultur app takes malicious to the next level”. Computerworld (bằng tiếng Anh). Lưu trữ bản gốc ngày 10 tháng 9 năm 2021. Truy cập ngày 10 tháng 9 năm 2021.

Liên kết ngoài