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.

özellikler 

adb'nin özellikleri arasında ana bilgisayardan dosya kopyalama, uygulamaları yükleme, logcat çıktısını görüntüleme, bir unix shell'e erişme  ve qualcomm edl moduna yeniden başlatma sayılabilir. örneğin, android uygulamaları bir dosyaya backup komutuyla kaydedilebilir. ayrıca java debug wire protocol için destek içerir.

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.

geliştirme geçmişi 
android yazılım geliştirme kiti (sdk) ilk olarak 2007'de piyasaya sürüldü. google, 2017'den beri adb'yi android sdk'dan ayrı olarak indirmeyi mümkün kıldı.

2015 yılında microsoft, adb istemcisine bağlanabilen bir android öykünücüsü yayınladı. 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ı. 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. 2020'de android 11 için google, artımlı yüklemeler ekledi. 2020'de wi-fi adb, macos için android studio'ya entegre edildi. 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ı. fuchsia, adb ile geriye dönük uyumlu olacaktır. fx ve ffx ile değiştirilecektir.

kurulum

ana bilgisayar 
windows için android sdk, ayıklanıp yüklenebilen adb.exe ikili dosyasını içerir. how-to-geek, ikili dosyaları içeren klasörü path ortam değişkenine eklemenizi önerir.

ubuntu'da adb, android-tools-adb paketi ile kurulabilir. 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. 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.

android cihazı 
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. 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. 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.

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.

mimari 
adb protokolü, usb üzerinden veya wi-fi üzerinden tcp üzerinden taşınabilir. i̇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.

i̇stemci ↔ sunucu protokolü 
i̇stemci ve sunucu arasındaki iletişim modu bir tcp soketidir. sunucu, istemcinin istek göndermesi gereken bir bağlantı noktasını dinler. i̇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.

sunucu ↔ arka plan programı protokolü 
sunucudan gönderilen mesajlar, aşağıdaki alanları içeren 24 bayt uzunluğunda bir başlıktan oluşur:

 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 
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. i̇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ı. 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.

adb gibi çeşitli kötü amaçlı yazılım aileleri. miner, ares, ipstorm, fbot ve trinity, 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. adb, güvenli modda önyükleme yaparak ve adb uninstall komutunu çalıştırarak kötü amaçlı yazılımları kaldırmak için de kullanılabilir.

ayrıca bakınız 

 android kurtarma modu
 fastboot

kaynakça

dış bağlantılar 

 android debug bridge - android developers 
 adb and fastboot guide , lineageos
 android debug bridge , arch linux wiki
 adb, gentoo linux wiki
  adb, gentoo linux wiki

android geliştirme yazılımları
protokoller
debug
android (işletim sistemi)
i̇ncelenmemiş çeviri içeren sayfalar