Bir Android Uygulamasının Kaynak Kodunun Elde Edilmesi

1
1035
views
Bir Android uygulamasının yani bir APK dosyasının tersine mühendislik yapılarak kaynak kodlarına erişim sağlama yöntemine APK Decompile adı verilir. Bu yazıda bir APK dosyasının kaynak koduna nasıl ulaşılabileceği uygulamalı olarak gösterilecektir.

Bilindiği gibi Java, Python gibi diller bir yorumlayıcı (interpreter) tarafından çalıştırılırlar ve yorumlamalı diller olarak anlandırılırlar. Diğer yandan C\C++, Golang gibi diller derlemeli (compiled) dillerdir ve bunlar derlendikten sonra işlemci tarafından direk çalıştırılabilirler. Bu iki dil ailesi tersine mühendislik anlamında karşılaştırıldığında derlemeli dillerin yorumlamalı dillere göre daha zor kaynak koduna ulaşılır. Fakat bunun onune geçmek için yorumlamalı diller obfuscation (yazılımın kaynak koduna erişimi engellemek için kullanılan karmaşıklaştırma teknikleri) adı verilen yöntemler kullanırlar.

Peki bir APK dosyasının tersine mühendislikle kaynak kodlarını elde etmek bize ne gibi yararlar kazandıracaktır? Kabaca bunun iki önemli yararı olduğu söylenebilir. Bunlar;

  • Uygulamanın gerçekleştirmiş olduğu eylemleri detaylıca anlayabilmeye imkan sağlar. Özellikle zararlı bir Android uygulaması analiz edilecekse  kaynak koda erişilerek analiz gerçekleştirilebilir.
  • Eğer beğendiğiniz bir uygulamadaki foksiyonları kendinize adapte etmek istiyorsanız, uygulamanın kaynak koduna ulaşarak geliştiricinin kullandığı yöntemi elde edebilirsiniz. Bu yönteme zararlı yazılım geliştiriciler sıklıkla başvururlar. Yani bir zararlının kaynak koduna erişerek kendi uygulamalarında bu yöntemi kullanırlar.

Şimdi bunun nasil gerçekleştirildiğine gelecek olursak. Öncelikle bu yazımızda kullanacağımız zararlı yazılımı https://koodous.com/ sitesisinden indirdim. Bankbot zararlı yazılım ailesine ait olan zararlının SHA256 değeri 8960d7baf7eef0cd5a8b4c2eed26ded224c776f5e1b4459fee7fe5892834d49e‘dir. Eğer Android zararlı yazılım analizi yapıyorsanız bu siteyi şiddetle tavsiye ederim. Zira sistemde çok ciddi sayıda güncel Android zararlısı var ve bu dataset yenileriyle kullanıcılar tarafından beslenmekte. Koodous‘a kayıd olduktan sonra zararlılar üzerinde arama yapabiliyor ve sonrasında indirebiliyorsunuz. Diğer kullanıcıların geliştirmiş olduğu imzalara (signature) erişip aradığınız özelliklerdeki zararlıları kolaylıkla bulabiliyorsunuz. Bunun yanı sıra kendiniz de bu tarz imzalar oluşturabiliyorsunuz. Koodous için şimdilik bu kadar detayla yetinelim.

Uygulamaya ait detaylar aşağıdaki resimdeki gibidir. Uygulama Spotify ikonu kullanmakta ve uygulamanın ismi MyApplication‘dir.

Android zararlısının detay bilgileri

Biz bu yazıda JADX aracını kullanacağız. JADX (Dex to Java decompiler) aracı https://github.com/skylot/jadx adresinden indirilir. JADX hem windows hem de Linux ortamında çalıştırılabilir. Komut satırından yada GUI’sı üzerinden çalıştırılabilir. JADX aracını çalıştırabilmek için JAVA 8 SDK ve üzerinin bilgisayarda yüklü olması gerekmektedir. Bu yazıda stable v0.6.1 surumu kullanılmıştır. Dosya indirilip zip dosyası açıldığında bin ve lib klasörleri sizleri karşılayacaktır. bin klasörü içine girilip uygulama buradaki çalıştırılabilir dosyalar üzerinden çalıştırılabilir. bat uzantılı dosyalar Window ortamı için uzantısı olmayanlar ise Linux ortamı için hazırlanmıştır. Gui versiyonu Windows ortamı için jadx-gui.bat olarak çalıştırılıp açılan ekranda indirilen APK seçilir.

Not: Indirelen uygulamaya APK uzantılı olacak şekilde değiştirin. Yoksa JADX’a dosyayı input olarak veremezsiniz.

Çıktı olarak asağıdaki şekildeki gibi bir ekran sizleri karşılayacaktır.

JADX – Java kaynak dosyalarının elde edilmesi

 

Burada sağ tarafıdaki menüden uygulamanın package kısmına giderek Java sınıflarına tıklanarak kaynak kodlarının görüntülenmesi sağlanır. Dikkat edilecek olursa tüm sınıfların düzgün olarak isimlendirilmediği kolaylıkla anlaşılabilir. Fakat sınıfların kaynak kodlarınında Android API Call‘larının nasıl kullanıldığı ve neyin amaçlandığı kolaylıkla anlaşılabilir. Örneğin yukarda highlight edilen kod parçacığında telefononun deviceId’si yani IMEI numarası elde edilmekte ve daha sonra bu bilgi komuta kontrol sunucusuna (http://a0178783.xsph.ru) ilave bilgiler ile gönderilmektedir.

1 YORUM

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz