เอดีบี (อังกฤษ: Android Debug Bridge ตัวย่อ ADB) เป็นเครื่องมือที่ใช้ดีบั๊กซอฟต์แวร์ในระบบปฏิบัติการแอนดรอยด์ โดยเดมอนบนอุปกรณ์แอนดรอยด์จะต่อกับเซิร์ฟเวอร์บนพีซีที่เป็นโฮสต์ ผ่านสายยูเอสบีหรือผ่านโพรโทคอลอินเทอร์เน็ตทีซีพี และเซิฟเวอร์ก็จะต่อกับแอปลูกข่ายที่ผู้ใช้ใช้ด้วยทีซีพี กูเกิลได้เริ่มแจกจำหน่ายเป็นซอฟต์แวร์โอเพ่นซอร์ซใต้สัญญาอนุญาตอะแพชีตั้งแต่ปี 2007 โดยมีลูกเล่นเป็นเชลล์และการสำรองข้อมูล เอดีบีใช้ได้กับวินโดวส์ ลินุกซ์ และแมคโอเอส ต่อมามีบ็อตเน็ตและมัลแวร์ที่ใช้มันในทางที่ผิด จึงมีการพัฒนาการพิสูจน์ตัวจริงด้วยอาร์เอสเอ และการระบุรายการอุปกรณ์ที่อนุญาตให้ใช้โดยเฉพาะ ๆ (device whitelisting)

ข้อมูลเบื้องต้น ผู้ออกแบบ, รุ่นเสถียร ...
เอดีบี (Android Debug Bridge)
ผู้ออกแบบกูเกิล
รุ่นเสถียร
34.0.1 (มี.ค. 2023)
ที่เก็บข้อมูลandroid.googlesource.com
ภาษาที่เขียนซี++
ระบบปฏิบัติการวินโดวส์, ลินุกซ์, แมคโอเอส
รวมถึงAndroid SDK
ประเภทเครื่องมือพัฒนาซอฟต์แวร์
สัญญาอนุญาตสัญญาอนุญาตอะแพชี 2.0
เว็บไซต์developer.android.com/studio/command-line/adb
ปิด

ลูกเล่น

Thumb
Android Device Monitor

ลูกเล่นของเอดีบี รวมการก๊อปไฟล์ไปจากคอมพิวเตอร์ที่เป็นโฮสต์[1], การติดตั้งแอป, การดูเอาต์พุตของ logcat, เชลล์ยูนิกซ์[2] และการรีบูตเข้าใน Qualcomm EDL mode[3] ยกตัวอย่างเช่น สามารถสำรองข้อมูลแอปต่าง ๆ บนอุปกรณ์แอนดรอยด์ด้วยรายคำสั่ง backup[4] เอดีบียังรองรับโพรโทคอล Java Debug Wire Protocol เพื่อใช้ดีบั๊กแอปอีกด้วย[5]

มีส่วนต่อประสานกราฟิกกับผู้ใช้ต่าง ๆ ที่ได้ทำขึ้น เช่น แอป Android Device Monitor ที่เป็นส่วนของแอนดรอยด์สตูดิโอ และสามารถใช้ดูดข้อมูลจากอุปกรณ์แอนดรอยด์[6]

เอดีบีสามารถใช้ติดตั้งไฟล์ APK ที่ไม่ได้มาจากกูเกิลเพลย์ เป็นวิธีที่เรียกว่า side-loading วิธีนี้ได้ใช้ติดตั้งแอปสำหรับ Windows Subsystem for Android ของวินโดวส์[7] และ Android virtual machine ของโครมโอเอส[8]

ประวัติ

กูเกิลได้เริ่มแจกจำหน่าย Android SDK ในปี 2007 พร้อมกับเอดีบี[9] และเริ่มตั้งแต่ปี 2017 ก็ได้อนุญาตให้ดาวน์โหลดเอดีบีต่างหากกับ Android SDK[10]

ในปี 2015 ไมโครซอฟท์ได้แจกจำหน่าย Android emulator ที่สามารถต่อกับเครื่องลูกข่ายของเอดีบี[11] ในปี 2016 แอนดรอยด์สตูดิโอรุ่น 2.0 ทำให้สามารถตั้งแอปและส่งไฟล์ผ่านเอดีบีได้เร็วเพิ่มขึ้นถึง 5 เท่า[12] ในปี 2017 เพื่อให้ใช้ Android Things ได้ง่าย กูเกิลได้สร้างแอปที่ซ่อนรายคำสั่งเอดีบีไว้ภายใน[13] สำหรับแอนดรอยด์ 11 ในปี 2020 กูเกิลได้เพิ่มวิธีการติดตั้งเอพีเคขนาดใหญ่โดยทำเป็นส่วน ๆ (incremental installation)[14] ในปี 2020 แอนดรอยด์สตูดิโอสำหรับแมคโอเอสเริ่มให้ใช้เอดีบีผ่านไวไฟ[15] สำหรับแอนดรอยด์ 12 ในปี 2021 รายคำสั่ง adb backup ได้จำกัดลงให้สำรองข้อมูลสำหรับแอปเฉพาะที่ผู้พัฒนาเลือกให้สำรองข้อมูลเท่านั้น (เป็น per-app manifesto configuration)[16] หลังจากที่ได้เลิกใช้ในแอนดรอยด์ 10 โดยเลิกพร้อมๆ กับ adb restore[17] ระบบปฏิบัติการกูเกิล ฟิวเชีย จะใช้ร่วมกับเอดีบีได้ ถึงแม้ในปลายปี 2022 ก็ยังต้องใช้โปรแกรม fx และ ffx เพื่อกิจคล้าย ๆ กันอยู่[18]

โครงงาน

Thumb
การเปิดใช้ "USB debugging" ในระบบแอนดรอยด์ ต้องเปิดในหน้า "developer settings"
การเปิดใช้ "USB debugging" ในระบบแอนดรอยด์ ต้องเปิดในหน้า "developer settings" 
Thumb
หลังจากได้ต่ออุปกรณ์แอนดรอยด์กับคอมพ์ที่เป็นโฮสต์ ผู้ใช้ก็จะต้องเช็คและยอมรับรหัสอาร์เอสเอของคอม
หลังจากได้ต่ออุปกรณ์แอนดรอยด์กับคอมพ์ที่เป็นโฮสต์ ผู้ใช้ก็จะต้องเช็คและยอมรับรหัสอาร์เอสเอของคอม 

คอมพิวเตอร์ที่เป็นโฮสต์

สำหรับวินโดวส์ Android SDK มีไฟล์ฐานสองคือ adb.exe ที่สามารถดึงออกมาติดตั้งได้[19] เว็บไซต์ How-To แนะนำให้เพิ่มโฟล์เดอร์ที่มี adb.exe ในค่าตัวแปรสิ่งแวดล้อมคือ PATH[20]

สำหรับอูบุนตู สามารถติดตั้งเอดีบีได้ด้วยแพ็กเกจ android-tools-adb[21] สำหรับเดเบียน ยังแนะนำอีกด้วยว่าหลังจากติดตั้งแพ็กเกจ adb แล้ว ให้ติดตั้งแพ็กเกจ android-sdk-platform-tools-common ด้วย เพราะจะติดตั้ง udev rules ซึ่งทำให้ใช้ซอฟต์แวร์ได้โดยไม่ต้องมีสิทธิรูต[22] สำหรับแมคโอเอสและลินุกซ์ดิสทริบิวชันอื่น ๆ สามารถดาวนโหลด์ติดตั้งไฟล์ แล้วเปลี่ยนตัวแปร PATH ใน bashrc[23]

อุปกรณ์แอนดรอยด์

สำหรับแอนดรอยด์รุ่น 4.2.2 และหลังจากนั้น (API level 17) จะมีกล่องข้อความที่แสดงรหัสย่ออาร์เอสเอ (fingerprint) ที่ผู้ใช้ควรเช็คแล้วยอมรับ ซึ่งป้องกันไม่ให้คอมพิวเตอร์ก่อการร้ายฉวยโอกาสกับกลไกดีบั๊กโดยไม่ได้รับอนุญาตจากผู้ใช้[24] เริ่มตั้งแต่แอนดรอยด์รุ่น 4.2 เมนูค่าตั้งผู้พัฒนา (developer settings) ก็จะซ่อนอยู่เป็นปกติ แต่เมื่อกดเลขบิลด์ 7 ครั้งในเมนู about ก็จะปรากฏให้เห็น หลังจากนั้นก็จะสามารถเปิด USB debugging ได้[25] ผู้ผลิตบางบริษัทใช้วิธีการอื่นในการเปิดให้ใช้ค่าตั้งนี้ ยกตัวอย่างเช่น  หัวเว่ย จะต้องใส่รหัสพินก่อนจะเปิดใช้เอดีบี[26]

ถ้าหน้าจอของแอนดรอยด์เสีย ก็อาจจะต่อเมาส์ผ่าน USB On-The-Go แล้วเปิด USB debuggingได้[27][26]

สถาปัตยกรรม

โพรโทคอลเอดีบีสามารถส่งผ่านยูเอ็สบี หรือผ่านไวไฟโดยใช้ทีซีพี มีสถาปัตยกรรมเป็นแบบผู้รับ-ผู้ให้บริการ มีโพรโทคอลอยู่สองอย่างที่ใช้ อย่างแรกใช้ระหว่างระบบรับบริการบนคอมกับระบบให้บริการบนคอม อย่างที่สองระหว่างระบบให้บริการบนคอมกับเดมอนบนอุปกรณ์แอนดรอยด์ เดมอนของเอดีบีใช้ภาษาซีทำให้เกิดผล โดยดำเนินการอยู่ในพื้นที่ผู้ใช้ของแอนดรอยด์ (Android user space) โดยได้การสนับสนุนจาก Android USB framework คือ UsbDeviceManager และ UsbDebuggingManager[5]

โพรโทคอลระหว่างผู้รับกับผู้ให้บริการ

ผู้รับบริการจะสื่อสารกับผู้ให้บริการผ่านซ็อกเก็ตทีซีพี คือ ผู้ให้บริการจะคอยฟังคำสั่งที่พอร์ตหนึ่ง ๆ ที่ผู้รับบริการจะส่งคำขอบริการไปหา คำขอบริการจะมีเขตข้อมูลเบื้องต้นยาว 4 ไบต์ในรูปแบบแอสกีบวกกับข้อมูลที่ส่ง (payload) ข้อมูลที่ส่งจะเริ่มด้วยคำว่า "host" ซึ่งแสดงว่ากำลังส่งข้อมูลไปยังผู้ให้บริการ ผู้ให้บริการก็จะตอบด้วยคำว่า OKAY หรือ FAIL เพื่อแสดงสถานะการบริการ บวกกับข้อมูลที่ส่งและความยาว[5]

โพรโทคอลระหว่างผู้ให้บริการกับเดมอน

ข้อความที่ผู้ให้บริการส่งไปยังเดมอน มีหัวเรื่องยาว 24 ไบต์ ซึ่งมีเขตข้อมูลดังต่อไปนี้[5]

  • คำสั่ง
  • อาร์กิวเมนต์ที่หนึ่ง
  • อาร์กิวเมนต์ที่สอง
  • ความยาวข้อมูล >=0
  • รหัสเช็คข้อมูล CRC-32
  • ค่าแมจิก คำนวณโดย คำสั่ง XOR 0xFFFFFFFF

ความปลอดภัย

จนถึงแอนดรอยด์รุ่น 2.2 ระบบจะอ่อนแอต่อการโจมตีแบบ RageAgainstTheCage เพราะเดมอนของเอดีบีไม่เช็คค่า return ของการเรียกระบบคือ setuid เมื่อพยามยามลดสิทธิของโปรแกรมหลัก การโจมตีจะแยก (fork) กระบวนการจนกระทั่งทำไม่ได้เพราะหมดค่าระบุกระบวนการ (process identifier) เมื่อเดมอนล้มแล้วเริ่มใหม่ ก็จะไม่สามารถเริ่มกระบวนการใหม่ที่มีสิทธิลดลง ดังนั้น ก็จะดำเนินการต่อไปด้วยสิทธิของรูต ซึ่งทำให้ได้เชลล์ที่มีสิทธิเป็นรูต[28]

ในปี 2017 ได้พบช่องโหว่ทางความปลอดภัยที่ใช้เอดีบีเพื่อเข้าควบคุมโมเด็มซึ่งอยู่บนบอร์ด แต่การโจมตีจะต้องอาศัยเอดีบีที่ได้เปิดใช้แล้ว และได้รับอนุญาตให้ต่อกับคอมนั้นแล้ว แม้นักวิจัยที่พบช่องโหว่นี้ก็ระบุว่า ยังมีทางเลี่ยงอื่น ๆ อีก[29]

มีสกุลมัลแวร์ต่าง ๆ รวมทั้ง ADB.Miner, Ares, IPStorm, Fbot และ Trinity 20 ที่สแกนอินเทอร์เน็ตเพื่อหาดูส่วนต่อประสานเอดีบีที่เปิดใช้อยู่ แล้วติดตั้งมัลแวร์ลงในอุปกรณ์เหล่านั้น[30] เอดีบียังสามารถใช้ลบมัลแวร์ออกได้ด้วย โดยบูตอุปกรณ์ให้เข้าในเซฟโหมด แล้วใช้รายคำสั่ง adb uninstall[31]

ดูเพิ่ม

เชิงอรรถและอ้างอิง

แหล่งข้อมูลอื่น

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.