Android Debug Bridge

Android Debug Bridge (tr. Android Hata Ayıklama Köprüsü) (genellikle adb olarak kısaltılır), Android tabanlı cihazlarda hata ayıklamak için kullanılan bir programlama aracıdır. Android cihazındaki arka plan programı, ana bilgisayardaki sunucuya USB veya TCP üzerinden son kullanıcı tarafından kullanılan istemciye bağlanan TCP üzerinden bağlanır. 2007'den beri Google tarafından Apache Lisansı altında açık kaynaklı yazılım olarak sunulan özellikler arasında bir kabuk ve yedekleme yapma imkanı bulunmaktadır. adb yazılımı; Windows, Linux ve macOS ile uyumludur. Botnet'ler ve RSA kimlik doğrulaması ve cihaz beyaz listeye alma gibi azaltıcı etkenlerin geliştirildiği diğer kötü amaçlı yazılımlar tarafından kötüye kullanılmıştır.

Android Debug Bridge
GNOME uçbiriminde cihazları sıralayan adb sunucusu başlatılıyor. Sonra, uname komutunu çalıştırmak için hata ayıklanan cihazda bir shell (kabuk) açılıyor.
Orijinal yazar(lar)Google
Güncel sürüm31.0.3
Programlama diliC++
İşletim sistemiWindows, Linux, macOS
TürYazılım Geliştirme Aracı
LisansApache License 2.0
Resmî sitesideveloper.android.com/studio/command-line/adb
Kod deposuandroid.googlesource.com

Özellikler

değiştir
 
Android Device Monitor

adb'nin özellikleri arasında ana bilgisayardan dosya kopyalama,[1] uygulamaları yükleme, logcat çıktısını görüntüleme, bir Unix shell'e erişme [2] ve Qualcomm EDL moduna yeniden başlatma sayılabilir.[3] Örneğin, Android uygulamaları bir dosyaya backup komutuyla kaydedilebilir.[4] Ayrıca Java Debug Wire Protocol için destek içerir.[5]

Bazı grafik arayüzler kullanıma sunuldu. Android Studio'daki görsel Android Device Monitor, bir Android cihazından bilgi almak için kullanılabilir.[6]

Geliştirme geçmişi

değiştir

Android Yazılım Geliştirme Kiti (SDK) ilk olarak 2007'de piyasaya sürüldü.[7] Google, 2017'den beri adb'yi Android SDK'dan ayrı olarak indirmeyi mümkün kıldı.[8]

2015 yılında Microsoft, adb istemcisine bağlanabilen bir Android öykünücüsü yayınladı.[9] 2016'da Android Studio 2.0 için uygulamaları yüklemek ve dosyaları adb aracılığıyla göndermek için 5 kat performans iyileştirmesi yapıldı.[10] Android Things'in daha kolay kullanımı için 2017 yılında manuel adb komutları etrafında bir sarmalayıcı yapılmıştır.[11] 2020'de Android 11 için Google, artımlı yüklemeler ekledi.[12] 2020'de Wi-Fi adb, macOS için Android Studio'ya entegre edildi.[13] Android 12 için 2021'de adb backup komutu, uygulamalardan kullanıcı verilerinin yedeklenmesinin uygulama başına manifesto yapılandırması kullanılarak etkinleştirilmesi için sınırlandırıldı.[14] Fuchsia, adb ile geriye dönük uyumlu olacaktır. Fx ve ffx ile değiştirilecektir.[15]

Ana bilgisayar

değiştir

Windows için Android SDK, ayıklanıp yüklenebilen adb.exe ikili dosyasını içerir.[16] How-To-Geek, ikili dosyaları içeren klasörü PATH ortam değişkenine eklemenizi önerir.[17]

Ubuntu'da adb, android-tools-adb paketi ile kurulabilir.[18] Debian için, aracı root izinleri olmadan çalıştırmayı mümkün kılan udev kurallarını yükleyen adb paketinin yanına android-sdk-platform-tools-common paketinin de yüklenmesi tavsiye edilmiştir.[19] macOS ve diğer Linux dağıtımları için platform araçları indirilebilir ve PATH değişkeni bashrc içinde değiştirilebilir.[20]

Android cihazı

değiştir

Android 4.2.2 veya sonraki sürümlerde (API düzeyi 17), kullanıcının kabul etmesi gereken bir RSA parmak izi içeren bir iletişim kutusu gösterilir. Bu, aygıt kullanıcısının izni olmadan hata ayıklama mekanizmasından yararlanan bilgisayarlara karşı koruma sağlar.[21] Android 4.2'den başlayarak, geliştirici ayarları varsayılan olarak gizlidir. Hakkında menüsünde yapı numarasına yedi kez basmak, bunları kullanıcıya görünür hale getirir. Bundan sonra, USB hata ayıklama seçeneği etkinleştirilebilir.[22] Bazı Android telefonlarında bunu etkinleştirmek için farklı prosedürleri vardır. Örneğin, Huawei, adb'nin etkinleştirilebilmesi için bir pin kodunun girilmesini gerektirir.[23]

Bir Android cihazın dokunmatik ekranı bozulursa, USB On-The-Go kullanarak cihaza bir fare bağlamak ve USB hata ayıklamasını etkinleştirmek mümkün olabilir.[23][24]

Adb protokolü, USB üzerinden veya Wi-Fi üzerinden TCP üzerinden taşınabilir. İstemci-sunucu mimarisini kullanır. Kullanılan iki farklı protokol vardır. Birincisi istemci ile sunucu arasında, ikincisi ise sunucu ile arka plan programı arasındadır. adb arka plan programı C'de uygulanır ve Android kullanıcı alanında bulunur. Daemon, Android USB çerçevesi, UsbDeviceManager ve UsbDebuggingManager tarafından kolaylaştırılır.[5]

İstemci ↔ sunucu protokolü

değiştir

İstemci ve sunucu arasındaki iletişim modu bir TCP soketidir. Sunucu, istemcinin istek göndermesi gereken bir bağlantı noktasını dinler. İstek, ASCII'de 4 baytlık bir başlangıç alanı ve bir yük içerir. Yük, sunucuya gönderilmesi gerektiğini belirtmek için ana bilgisayar kelimesiyle başlar. Sunucu daha sonra durumu belirtmek için TAMAM veya BAŞARISIZ olarak yanıt verebilir, isteğe bağlı bir yük ve uzunluk ile birlikte.[5]

Sunucu ↔ arka plan programı protokolü

değiştir

Sunucudan gönderilen mesajlar, aşağıdaki alanları içeren 24 bayt uzunluğunda bir başlıktan oluşur:[5]

  • Command
  • First argument
  • Second argument
  • Length of the payload, 0 or higher
  • CRC32 of the data payload
  • Magic value, calculated through command XOR 0xFFFFFFFF

Güvenlik

değiştir

Android 2.2'ye kadar Android, RageAgainstTheCage istismarına karşı savunmasızdı. adb arka plan programı, ayrıcalıkları düşürürken setuid sistem çağrısının dönüş değerini kontrol etmedi. İstismar, süreç tanımlayıcılarının tükenmesi nedeniyle başarısız olana kadar süreçleri çatallar. Arka plan programı çöktüğünde ve yeniden başladığında, bırakılan ayrıcalıklarla yeni bir işlem başlatamaz ve kök olarak çalışmaya devam eder. Sonra adb bir kök kabuk sağladı.[25] 2017 yılında, yerleşik modemi devralmak için adb'den yararlanan bir güvenlik açığı ortaya çıktı. Bazı geçici çözümler mevcut olmasına rağmen saldırı, adb'nin önceden etkinleştirilmesini ve yetkilendirilmesini gerektiriyordu.[26]

Miner, Ares, IPStorm, Fbot ve Trinity gibi çeşitli kötü amaçlı yazılım aileleri, adb arayüzünün herkese açık olup olmadığı konusunda interneti taradı ve bu cihazlara kötü amaçlı yazılım yükledi.[27]

adb, güvenli modda önyükleme yaparak ve adb uninstall [PaketAdı] komutunu çalıştırarak kötü amaçlı yazılımları ve önyüklü gelen uygulamaları kaldırmak için de kullanılabilir.[28]

Ayrıca bakınız

değiştir
  • Android kurtarma modu
  • Fastboot

Kaynakça

değiştir
  1. ^ Android wireless application development. 3rd. Shane Conder. Upper Saddle River, NJ: Addison-Wesley. 2012. ISBN 978-0-321-81383-1. OCLC 749852462. 26 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Eylül 2021.  Yazar |ad1= eksik |soyadı1= (yardım)
  2. ^ "Things You Can Do with Android's adb Command". For Dummies (İngilizce). 15 Mayıs 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Eylül 2021. 
  3. ^ An In-Depth Guide to Mobile Device Forensics. [S.l.]: CRC PRESS. 2021. s. 72. ISBN 978-0-367-63300-4. OCLC 1250310301. 26 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Eylül 2021.  Yazar |ad1= eksik |soyadı1= (yardım)
  4. ^ Jack Wallen (6 Mart 2015). "How to create a full backup of your Android device without root". 24 Ocak 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Ocak 2016. 
  5. ^ a b c d Unboxing Android USB: a hands-on approach with real World examples. Berkeley, CA. 2014. ISBN 978-1-4302-6209-1. OCLC 880673864. 26 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Eylül 2021.  Yazar |ad1= eksik |soyadı1= (yardım)
  6. ^ Learning embedded Android N programming: create the perfectly customized system by unleashing the power of Android OS on your embedded device. Birmingham, UK. 2016. s. 89. ISBN 9781785283284. OCLC 1020708322. 26 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Eylül 2021. 
  7. ^ "Google releases Android SDK". Macworld (İngilizce). 10 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Eylül 2021. 
  8. ^ "Google makes ADB, fastboot, and other platform tools available without full SDK or Android Studio download". Android Police (İngilizce). 5 Ocak 2017. 10 Nisan 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Eylül 2021. 
  9. ^ "Microsoft Releases Android Emulator and It's Supposed to Be Faster than Google's". Softpedia (İngilizce). 10 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Eylül 2021.  Yazar |ad1= eksik |soyadı1= (yardım)
  10. ^ "Android Studio 2.0 - Beta". Android Developers Blog (İngilizce). 10 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Eylül 2021. 
  11. ^ "Android Things Developer Preview 6". Android Developers Blog (İngilizce). 10 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Eylül 2021. 
  12. ^ "Turning it up to 11: Android 11 for developers". Android Developers Blog (İngilizce). 17 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Eylül 2021. 
  13. ^ "Announcing Android Studio Arctic Fox (2020.3.1) & Android Gradle plugin 7.0". Android Developers Blog (İngilizce). 12 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Eylül 2021. 
  14. ^ "Behavior changes: Apps targeting Android 12 | Android 12 Beta". Android Developers (İngilizce). 28 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 28 Eylül 2021. 
  15. ^ "Google wants to make Fuchsia devices manageable with Android's ADB tool". 9to5Google (İngilizce). 26 Ağustos 2022. 29 Ağustos 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Ağustos 2022.  Yazar |ad1= eksik |soyadı1= (yardım)
  16. ^ PhoneGap build: developing cross platform mobile applications in the cloud. Boca Raton. 2013. s. 38. ISBN 978-1-4665-8975-9. OCLC 862745697. 7 Mart 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Ocak 2022.  Yazar |ad1= eksik |soyadı1= (yardım)
  17. ^ "How to Install and Use ADB, the Android Debug Bridge Utility". How-To Geek (İngilizce). 4 Eylül 2021. 18 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Eylül 2021. 
  18. ^ "7". Android Studio 4. 0 Development Essentials - Java Edition: Developing Android Apps Using Android Studio 4. 0, Java and Android Jetpack. Cary. 2020. ISBN 978-1-951442-21-7. OCLC 1190906409. 26 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Eylül 2021.  Yazar |ad1= eksik |soyadı1= (yardım)
  19. ^ "Debian -- Details of package adb in bullseye". packages.debian.org. 8 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Eylül 2021. 
  20. ^ "How to Install Android Debug Bridge (ADB) and Fastboot". Lifewire (İngilizce). 30 Ocak 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 18 Ocak 2022. 
  21. ^ "Run apps on a hardware device". Android Developers (İngilizce). 8 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 8 Eylül 2021. 
  22. ^ "How to enable Developer options in Android 4.2". TechRepublic (İngilizce). 9 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Eylül 2021.  Yazar |ad1= eksik |soyadı1= (yardım)
  23. ^ a b "Come attivare debug USB". Salvatore Aranzulla (İtalyanca). 9 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Eylül 2021.  Yazar |ad1= eksik |soyadı1= (yardım)
  24. ^ "How to enable USB debugging mode on Android". The Punch (İngilizce). 9 Ağustos 2019. 17 Eylül 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Eylül 2021.  Yazar |ad1= eksik |soyadı1= (yardım)
  25. ^ Android hacker's handbook. Zach Lanier, Collin Mulliner, Pau Oliva, Stephen A. Ridley, Georg Wicherski. Indianapolis, IN: Wiley. 2014. s. 75. ISBN 978-1-118-60861-6. OCLC 875820167. 26 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Eylül 2021.  Yazar |ad1= eksik |soyadı1= (yardım)
  26. ^ "Google plugs severe Android vulnerability that exposed devices to spying". Ars Technica (İngilizce). 9 Ocak 2017. 10 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Eylül 2021.  Yazar |ad1= eksik |soyadı1= (yardım)
  27. ^ "Android devices ensnared in DDoS botnet". ZDNet (İngilizce). 10 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Eylül 2021.  Yazar |ad1= eksik |soyadı1= (yardım)
  28. ^ "This Vultur app takes malicious to the next level". Computerworld (İngilizce). 10 Eylül 2021 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Eylül 2021.  Birden fazla yazar-name-list parameters kullanıldı (yardım); Yazar |ad1= eksik |soyadı1= (yardım)

Dış bağlantılar

değiştir