เอดีบี

เอดีบี (ตัวย่อ ADB) เป็นเครื่องมือที่ใช้ดีบั๊กซอฟต์แวร์ใน#เปลี่ยนทาง [[แม่แบบ:ไม่ตัด]]#เปลี่ยนทาง [[แม่แบบ:ไม่ตัด]]
โดยเดมอนบนอุปกรณ์แอนดรอยด์จะต่อกับเซิร์ฟเวอร์บนพีซีที่เป็นโฮสต์ ผ่านสาย#เปลี่ยนทาง หรือผ่าน#เปลี่ยนทาง อินเทอร์เน็ต#เปลี่ยนทาง 
และเซิฟเวอร์ก็จะต่อกับแอปลูกข่ายที่ผู้ใช้ใช้ด้วยทีซีพี
เอดีบีใช้ได้กับวินโดวส์ ลินุกซ์ และแมคโอเอส
ต่อมามีบ็อตเน็ตและมัลแวร์ที่ใช้มันในทางที่ผิด จึงมีการพัฒนาการพิสูจน์ตัวจริงด้วยอาร์เอสเอ และการระบุรายการอุปกรณ์ที่อนุญาตให้ใช้โดยเฉพาะ ๆ (device whitelisting)
ลูกเล่น.
ลูกเล่นของเอดีบี รวมการก๊อปไฟล์ไปจากคอมพิวเตอร์ที่เป็นโฮสต์,
การติดตั้งแอป, การดูเอาต์พุตของ logcat, เชลล์ยูนิกซ์
และการ#เปลี่ยนทาง เข้าใน Qualcomm EDL mode
ยกตัวอย่างเช่น สามารถสำรองข้อมูลแอปต่าง ๆ บนอุปกรณ์แอนดรอยด์ด้วยรายคำสั่ง <code>backup</code>
เอดีบียังรองรับโพรโทคอล Java Debug Wire Protocol เพื่อใช้ดีบั๊กแอปอีกด้วย
มีส่วนต่อประสานกราฟิกกับผู้ใช้ต่าง ๆ ที่ได้ทำขึ้น
เช่น แอป Android Device Monitor ที่เป็นส่วนของแอนดรอยด์สตูดิโอ และสามารถใช้ดูดข้อมูลจาก#เปลี่ยนทาง #เปลี่ยนทาง 
เอดีบีสามารถใช้ติดตั้งไฟล์ APK ที่ไม่ได้มาจากกูเกิลเพลย์ เป็นวิธีที่เรียกว่า side-loading วิธีนี้ได้ใช้ติดตั้งแอปสำหรับ Windows Subsystem for Android ของวินโดวส์
และ Android virtual machine ของโครมโอเอส
ประวัติ.
กูเกิลได้เริ่มแจกจำหน่าย Android SDK ในปี#เปลี่ยนทาง 2007 พร้อมกับเอดีบี
และเริ่มตั้งแต่ปี#เปลี่ยนทาง 2017 ก็ได้อนุญาตให้ดาวน์โหลดเอดีบีต่างหากกับ Android SDK
ในปี#เปลี่ยนทาง 2015 ไมโครซอฟท์ได้แจกจำหน่าย Android emulator ที่สามารถต่อกับเครื่องลูกข่ายของเอดีบี
ในปี#เปลี่ยนทาง 2016 แอนดรอยด์สตูดิโอรุ่น 2.0 ทำให้สามารถตั้งแอปและส่งไฟล์ผ่านเอดีบีได้เร็วเพิ่มขึ้นถึง 5#เปลี่ยนทาง เท่า
ในปี#เปลี่ยนทาง 2017 เพื่อให้ใช้ Android Things ได้ง่าย กูเกิลได้สร้างแอปที่ซ่อนรายคำสั่งเอดีบีไว้ภายใน
สำหรับ#เปลี่ยนทาง ในปี#เปลี่ยนทาง 2020 กูเกิลได้เพิ่มวิธีการติดตั้งเอพีเคขนาดใหญ่โดยทำเป็นส่วน ๆ (incremental installation)
ในปี#เปลี่ยนทาง 2020 #เปลี่ยนทาง สตูดิโอสำหรับ#เปลี่ยนทาง เริ่มให้ใช้เอดีบีผ่านไวไฟ
สำหรับแอนดรอยด์ 12 ในปี 2021#เปลี่ยนทาง รายคำสั่ง <code>adb backup</code> ได้จำกัดลงให้สำรองข้อมูลสำหรับแอปเฉพาะที่ผู้พัฒนาเลือกให้สำรองข้อมูลเท่านั้น (เป็น per-app manifesto configuration)
หลังจากที่ได้เลิกใช้ในแอนดรอยด์ 10 โดยเลิกพร้อม ๆ กับ <code>adb restore</code>
ระบบปฏิบัติการกูเกิล ฟิวเชีย จะใช้ร่วมกับเอดีบีได้ ถึงแม้ในปลายปี#เปลี่ยนทาง 2022 ก็ยังต้องใช้โปรแกรม fx และ ffx เพื่อกิจคล้าย ๆ กันอยู่
โครงงาน.
คอมพิวเตอร์ที่เป็นโฮสต์.
สำหรับวินโดวส์ Android SDK มีไฟล์ฐานสองคือ adb.exe ที่#เปลี่ยนทาง ดึงออกมาติดตั้งได้
เว็บไซต์ How-To แนะนำให้เพิ่มโฟล์เดอร์ที่มี adb.exe ในค่าตัวแปรสิ่งแวดล้อมคือ PATH
สำหรับอูบุนตู สามารถติดตั้งเอดีบีได้ด้วยแพ็กเกจ <code>android-tools-adb</code>
สำหรับ#เปลี่ยนทาง ยังแนะนำอีกด้วยว่าหลังจากติดตั้งแพ็กเกจ <code>adb</code> แล้ว ให้ติดตั้งแพ็กเกจ <code>android-sdk-platform-tools-common</code> ด้วย เพราะจะติดตั้ง udev rules ซึ่งทำให้ใช้ซอฟต์แวร์ได้โดยไม่ต้องมีสิทธิรูต
สำหรับแมคโอเอสและ#เปลี่ยนทาง [[แม่แบบ:ไม่ตัด]]#เปลี่ยนทาง [[แม่แบบ:ไม่ตัด]]อื่น ๆ สามารถดาวนโหลด์ติดตั้งไฟล์ แล้วเปลี่ยนตัวแปร PATH ใน bashrc
อุปกรณ์แอนดรอยด์.
สำหรับแอนดรอยด์รุ่น 4.2.2 และหลังจากนั้น (API level 17) จะมีกล่องข้อความที่แสดงรหัสย่ออาร์เอสเอ (fingerprint) ที่ผู้ใช้ควรเช็คแล้วยอมรับ 
ซึ่งป้องกันไม่ให้คอมพิวเตอร์ก่อการร้ายฉวยโอกาสกับกลไกดีบั๊กโดยไม่ได้รับอนุญาตจากผู้ใช้
เริ่มตั้งแต่แอนดรอยด์รุ่น 4.2 เมนูค่าตั้งผู้พัฒนา (developer settings) ก็จะซ่อนอยู่เป็นปกติ 
แต่เมื่อกดเลขบิลด์ 7#เปลี่ยนทาง ครั้งในเมนู about ก็จะปรากฏให้เห็น 
หลังจากนั้นก็จะสามารถเปิด USB debugging ได้
ผู้ผลิตบางบริษัทใช้วิธีการอื่นในการเปิดให้ใช้ค่าตั้งนี้ 
ยกตัวอย่างเช่น #เปลี่ยนทาง หัวเว่ย จะต้องใส่รหัสพินก่อนจะเปิดใช้เอดีบี
ถ้าหน้าจอของแอนดรอยด์เสีย ก็อาจจะต่อเมาส์ผ่าน USB On-The-Go แล้วเปิด USB debuggingได้
สถาปัตยกรรม.
โพรโทคอลเอดีบีสามารถส่งผ่านยูเอ็สบี หรือผ่านไวไฟโดยใช้ทีซีพี
มีสถาปัตยกรรมเป็นแบบผู้รับ-ผู้ให้บริการ
มีโพรโทคอลอยู่สองอย่างที่ใช้ 
อย่างแรกใช้ระหว่างระบบรับบริการบนคอมกับระบบให้บริการบนคอม อย่างที่สองระหว่างระบบให้บริการบนคอมกับเดมอนบนอุปกรณ์แอนดรอยด์
โดยได้การสนับสนุนจาก Android USB framework คือ <code>UsbDeviceManager</code> และ <code>UsbDebuggingManager</code>
โพรโทคอลระหว่างผู้รับกับผู้ให้บริการ.
ผู้รับบริการจะสื่อสารกับผู้ให้บริการผ่านซ็อกเก็ตทีซีพี
คือ ผู้ให้บริการจะคอยฟังคำสั่งที่พอร์ตหนึ่ง ๆ ที่ผู้รับบริการจะส่งคำขอบริการไปหา 
คำขอบริการจะมีเขตข้อมูลเบื้องต้นยาว #เปลี่ยนทาง ในรูปแบบแอสกีบวกกับข้อมูลที่ส่ง (payload)
ข้อมูลที่ส่งจะเริ่มด้วยคำว่า "host" ซึ่งแสดงว่ากำลังส่งข้อมูลไปยังผู้ให้บริการ 
ผู้ให้บริการก็จะตอบด้วยคำว่า OKAY หรือ FAIL เพื่อแสดงสถานะการบริการ บวกกับข้อมูลที่ส่งและความยาว
โพรโทคอลระหว่างผู้ให้บริการกับเดมอน.
ข้อความที่ผู้ให้บริการส่งไปยังเดมอน มีหัวเรื่องยาว 24#เปลี่ยนทาง ไบต์ ซึ่งมีเขตข้อมูลดังต่อไปนี้<templatestyles src="Div col/styles.css"/> 
ความปลอดภัย.
จนถึงแอนดรอยด์รุ่น 2.2 ระบบจะอ่อนแอต่อการโจมตีแบบ "RageAgainstTheCage"
เพราะเดมอนของเอดีบีไม่เช็คค่า return ของการเรียกระบบคือ setuid เมื่อพยามยามลดสิทธิของโปรแกรมหลัก
การโจมตีจะแยก (fork) กระบวนการจนกระทั่งทำไม่ได้เพราะหมดค่าระบุกระบวนการ (process identifier)
เมื่อเดมอนล้มแล้วเริ่มใหม่ ก็จะไม่สามารถเริ่มกระบวนการใหม่ที่มีสิทธิลดลง ดังนั้น ก็จะดำเนินการต่อไปด้วยสิทธิของรูต
ซึ่งทำให้ได้เชลล์ที่มีสิทธิเป็นรูต
ในปี#เปลี่ยนทาง 2017 ได้พบช่องโหว่ทางความปลอดภัยที่ใช้เอดีบีเพื่อเข้าควบคุมโมเด็มซึ่งอยู่บนบอร์ด
แต่การโจมตีจะต้องอาศัยเอดีบีที่ได้เปิดใช้แล้ว และได้รับอนุญาตให้ต่อกับคอมนั้นแล้ว แม้นักวิจัยที่พบช่องโหว่นี้ก็ระบุว่า ยังมีทางเลี่ยงอื่น ๆ อีก
มีสกุลมัลแวร์ต่าง ๆ รวมทั้ง ADB.Miner, Ares, IPStorm, Fbot และ Trinity 20 ที่สแกนอินเทอร์เน็ตเพื่อหาดูส่วนต่อประสานเอดีบีที่เปิดใช้อยู่ แล้วติดตั้งมัลแวร์ลงในอุปกรณ์เหล่านั้น
เอดีบียังสามารถใช้ลบมัลแวร์ออกได้ด้วย โดยบูตอุปกรณ์ให้เข้าในเซฟโหมด แล้วใช้รายคำสั่ง <code>adb uninstall</code>
เชิงอรรถและอ้างอิง.
<templatestyles src="Reflist/styles.css" />