Android .apk Dosyasından Kaynak Kodlara Erişim

Herhangi bir .apk dosyasından kaynak koduna erişebileceğinizi biliyor muydunuz? Marketten indirdiğiniz programların .apk uzantılı dosyalarında veya internetten indirdiğiniz .apk dosyalarında işlem yapabilirsiniz.

Evet yanlış okumadınız. Android uygulamalarınızı java ile yazıyorsanız .jar dosyaları gibi sıkıştırılmış dosyalar ile de muhakkak uğraşmışlığınız olmuştur. Her uygulama compile edildikten sonra class dosyaları yalın olarak bulunmaz ve tekrar farklı formatlara dönüştürülüp sıkıştırılmış dosya formatında sizlere .apk olarak servis edilir.

Peki android uygulamaların kodlarını görmek mümkün müdür ?

Kısmen evet, bu tür decompiler uygulamaları tamamen size kodu vermez. Bazı kısımlarını gösterir. Değişkenler, sabitler vs size farklı isimlerde gözükür, bazen çok anlamsız olduğunu düşünebilsek de ne arayacağınızı biliyorsanız, aradığınızı bulabilirsiniz.

Decompiler ne amaçlarla kullanılır ?

Bir uygulamanın kaynak kodlarına erişmek isteyebilirsiniz. Tabii, kimse size kendi yazdığı kaynak kodlarını paylaşmayacak olduğunu da düşünürseniz, ya uygulamayı çok iyi analiz edeceksiniz ki bu zaten gereklidir ya da kaynak dosyalardaki kullanım şekillerine bir yöntemle erişmeniz gerekecek. Bu tür bir uğraşı için, apk decompiler kullanabiliyorsunuz. Apk decompiler edilebilmesine karşılık olarak ise, uygulama güvenlik önlemleri sağlanabiliniyor.

Önce googleplay den ilgili apk nın adresini kopyalıyorsunuz.

Sonra bu uygulamanın apk dosyasını bilgisayara indirebilmek için

buraya tıkladığınızda çıkan ekrandaki satıra yazıyorsunuz. Ve bir süre sonra uygulamanın apk dosyası bilgisayarınıza indiriliyor.

1.Yol:

Online

Bu işlem için online araçlar hizmete sunulmuş durumda. Apk dosyasını bu sitelere yükleyerek kaynak kodları çok kısa sürede fazla uğraşmadan elde edebilirisiniz.

Çevrimiçi aracını kullanın, apk yükleyin ve kaynak kodunu alın.

http://www.javadecompilers.com/apk

http://www.decompileandroid.com

2.Yol:

Apktool Kullanımı

Apk dosyasını decompile ederek içerisindeki dosyaları okunabilir hale getiren bir araçtır. Buradan indirebilirsiniz.

Kullanımı:

d parametresi ile apk dosyasını decode ederek içerisindeki dosya ve klasörleri bir klasörde toplayabiliriz.

Apk uzantılı dosyamızın uzantısını .zip yapıp unzip ile açtığımızda da apk içerisindeki dosyalara erişebiliriz. Fakat o zaman AndroidManifest.xml dosyasının içerisini görüntüleyemiyoruz.

b parametresi ile dosyaları toplayarak apk dosyası haline getirebiliriz.

Bir .apk dosyasını açmaya çalıştığımızda karşımıza çıkan yapı şu şekildedir;

“.dex” formatında olan bu yapıyı anlamlandırılabilir hale getirmek için decompile etmeliyiz. Apktool android .apk dosyalarını decompile etmek için kullanılan araçtır. Decompile sonucunda smali adını verdiğimiz ara kodları elde ederiz.

.dex  <————–>   .smali   <—————–   java resource code

Apktool son versiyonunu https://ibotpeaches.github.io/Apktool/  adresinden indirebilirsiniz.

İndirmiş olduğunuz .jar dosyasını decompiler etmek için  “d”  parametresi ile çalıştırmalısınız.

Decompiler sonucunda;

  • Resources (xml dosyaları ve resimler)
  • Manifest File
  • Yml dosyası (sdk ve versiyon bilgisi)
  • smali dosyası

oluşmaktadır.

Oluşan dosyalara ait bir ekran görüntüsü aşağıda veilmiştir.

Buradaki manifest dosyasını açtığımızda neredeyse orjinaliyle aynı bir manifest dosyası elde ettiğimizi görüyoruz.

Ayrıca Apktool sadece decompiler yapma işlemi için değil, aynı şekilde decompiler edilmiş bir apk dosyasını derleme yaparak paketleme işlemi için de  kullanılmaktadır.

Bunun için “b” (build) parametresi kullanılır.

3.Yol:

APK Easy Manager kullanımı

Hiç uğraşmadan komut vermeden  tek bir tuşa basarak apk dosyasını ayıklayabilir ve birleştirebilirsiniz decompiler kısmı apk ayıklama kısmıdır builder kısmı ise apk birleştirme kısmıdır.

APK Tool’ün yan kuruluşu da diyebileceğimiz bu proğram aynen APK Tool’ün yaptığı işlemlerin kısaltılmış hali olarak gözükmekte, bunda tek fark sadece arayüz eklenmiş, ilemler yine cmd ekranında yapıyor ama çalışılabilir exe arayüz olduğu için cmd ekranını göremiyoruz.

Uygulama çoğu apk’da işe yaradığı gibi bazılarındada işe yaramayabiliyor, çalışmak için apk yı üzerine sürüklemeniz yeterli

  • Öncelikle indirmek için tıklayınız -> APK Easy Manager
  • İndirdikten sonra açtığınızda aşağıdaki gibi bir program ile karşılaşacaksınız

Nasıl kullanabilirsiniz ?

  • Bir .apk dosyasını bu program açık durumdayken, Drop APK Files here kısmına sürükleyiniz ve seçiniz.
  • Dosyanın ismi, uygulama içerisindeki listede seçili durumda iken, Decompiler kısmında Decompiler 1 – Ginderbread and below version Apps‘i seçiniz ve Start Decompiling butonuna tıklayınız.
  • İlgili apk dosyası decompile edildikten sonra, uygulamanın bulunduğu dizin içerisinde projects klasörü içerisinde uygulamaya ait yeni bir klasör açılmış ve erişebileceğiniz tüm kodlar burada bulunuyor olacaktır.

Buradada Project klasörüne girerek ayıkladığımız apk’yı düzenliyoruz türkçeleştireceksek türkçeleştirip bir sonraki aşamaya geçiyoruz

Bu bölümden türkçeleştireceksek values e giriyoruz resim degiştirmek vs için diğer klasörlere bakabilir ve düzenleyip degiştirebilirsiniz.

notepad++ ile açıyoruz

string kısımlarını türkçeleştirdikten sonra

kaydet diyip çıkıyoruz

daha sonra geri çıkarak klasörü builder bölümüne sürüklüyoruz ve builder 1 seçip start building butonuna basıyoruz.

oluşan dosya result klasörünün içerisinde belirecektir

Bu dosyayı alıp kullanabiliriz artık
Telefonunuza attığınız dosyanın yerini input butonuna basarak kayıt edilecegi yeri Output butonuna basarak seçiyoruz ve testkey seçenegini seçip sing the file butonuna basıyoruz ve dosyamız lisanslanmış oluyor böylece telefonunuza kurulabilir duruma gelmiş oldu.
Dosyaları yukarıda belirttiğim adreslerden indirerek uygulamaya başlayabilirsiniz.
Not : Her Apk dosyasında işe yaramayabiliyor

Uyğulamanın çalışması için sisteminizde java yüklü olmalıdır

Tüm bu aşamalardan sonra apk dosyanızı kullanabilir ve paylaşabilirsiniz umarım herkes için yararlı olur ve sizleri büyük sıkıntılardan kurtarır. Düzenlemelerinizi Notepad++ ile yapınız.

Java SE Development ve Runtime Kit 7u40

APK Easy Manager

Notepad++

4.Yol:

DEX2JAR KULLANIMI

Classes.dex dosyasını JAR dosyasına dönüştürmek için kullanılan bir araçtır. Buradan erişebilirsiniz.

Gerekli olan programlar:

DEX2JAR  Burdan dex2jar dosyasını indirin. ya da buradan .

Burdan jd-gui.exe dosyasını indirin ya da buradan .

Belirttiğim 2 programı indirdikten sonra kodlamasını görmek istediğiniz bir APK dosyası seçin ve sırasıyla işlemlere devam edin.

Yeni bir klasör oluşturun ve kodunu çözmek istediğiniz .apk dosyasına kopyalayın.

APK Dosyasını bilgisayarınıza indirin ve ornek.apk isimli dosyanızın sonuna “.zip” ekleyerek sıkıştırılmış hale dönüştürün.

Şimdi classes.dex dosyalarına vb. erişebilirsiniz. Bu aşamada çizilebilir dosyaları görebiliyor ancak xml ve Java dosyalarını göremiyorsunuz.

Zip haline dönüştürdüğünüz APK dosyasına sağ tıklayarak Dosyaları çıkart komutunu uygulayın.

İndirdiğiniz dex2jar dosyasını da “klasöre çıkar dex2jarx.x.x.x” diyin.

Çıkarttığınız “Ornek.Apk” klasörünün içindeki Classes.dex dosyasını üst satırda oluşturduğumuz “dex2jar” klasörünün içine atın.

Özetle apk yı zip haline çevirdik, sonra bunu klasör haline getirdik, sonra da bu klasör içindeki Classes.dex dosyasını dex2jar klasörünün içine kopyaladık.

Şimdi Başlat – Çalıştır – CMD komut dizinini açın.

“cd” komutu ile “dex2jar” klasörüne gidin ve klasör içine girdikten sonra şu komutu uygulayın:

yani komut satırına cd dex2jar yazıp entera basıyoruz

tabi bu işlemi dex2jar klasörünü nerede oluşturduysanız oraya gittikten sonra yapıyoruz.

dex2jar klasöründe iken komut satırına

dex2jar classes.dex” (Tırnaklar olmayacak)  yazıyoruz.

(mac terminali veya ubuntu için ./d2j-dex2jar.sh classes.dex yazın)

Bu komuttan sonra “classes_dex2jar.jar” diye bir dosya oluşacaktır.

dex2jar classes.dex yazınca
dex2jar’ is not recognized as an internal or external command,
operable program or batch file
hatasını alanlar bunu yazsın   d2j-dex2jar classes.dex
ayrıca java yazılımı pc nizde yüklü olması gerekli, yoksa hata alırsınız

Oluşturulan dosya dex2jar klasörünün içindedir

Classes_dex2jar.jar dosyasını ilk başta indirdiğimiz “Jd-Gui.exe” programı ile indirip Kodlara ulaşabilirsiniz.

şimdi sınıf dosyalarını görebiliyorsunuz

Bu sınıf dosyalarını kaydedin (jd-gui’de, Dosya -> Tüm Kaynakları Kaydet’e tıklayın) src ismine göre. Bu aşamada Java kaynağını elde edersiniz ancak .xml dosyaları hala okunamaz durumdadır, bu yüzden devam edin.

Şimdi başka bir yeni klasör aç

  1. apktool.bat (veya apktool / Linux için) ve apktool_<version>.jar // http://ibotpeaches.github.io/Apktool/install/
  2. jar dosyasını yukarıdan apktool.jar olarak yeniden adlandırın ve her iki dosyayı da aynı klasöre yerleştirin.
  3. bir dos kutusu (cmd.exe) açın ve bu klasöre geçin; Java Ortamı’nın kurulu olduğunu doğrulayın (Linux için ayrıca gerekli kütüphanelerle ilgili notları kontrol edin)
  4. google kullanarak framework-res.apk dosyasını indirin ve aynı klasöre koyun (Tüm apk dosyalarının framework-res.apk dosyasına ihtiyacı yoktur)
  5. Başlat: apktool decode [apk file] örneğin apktool decode compass.apk  gibiOrta sonuç : kaynak dosyaları, AndroidManifest.xml
  6. aPK dosyasını seçtiğiniz bir açıcı ile açınOrta sonuç classes.dex
  7. http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.Zip&can=2&q= adresinden dex2jar-0.0.9.15.Zip dosyasını indirip çıkarın
  8. classes.dex öğesini dex2jar.bat üzerine sürükleyip bırakın (veya bir DOS kutusuna <path_to>dex2jar.bat classes.dex yazın; Linux için dex2jar.sh kullanın)Orta sonuç classes_dex2jar.jar
  9. classes_dex2jar.jar_ paketini açın (kullanılan kod çözücüye bağlı olarak isteğe bağlı olabilir)
  10. sınıf dosyalarınızı kodabilirsiniz (örneğin JD-GUI veya DJ Decompiler ileSonuç : kaynak kodu
  1. Şimdi komutu apktool if framework-res.apk gibi çalıştırın (eğer burada yoksa get here yoksa) ve sonraki
  2. apktool d myApp.apk (burada myApp.apk, kodunu çözmek istediğiniz dosya adını belirtir)

şimdi bu klasörde bir dosya klasörü almak ve apk’ın xml dosyalarını kolayca okuyabilirsiniz.

Dex2Jar

Bir diğer tersine mühendislik aracı Dex2Jar  “.dex” formatında yer alan apk içerisindeki dosyaları  “.jar” uzantılı java binary dosyalarına çevirir.

.jar  uzantılı java binary dosyalarına dönüştürülmüş olan bu dosyalar başka bi java decompiler aracı kullanılarak rahatlıkla kaynak koda dönüştürülebilir.

Bu araç aşağıdaki linkten indirilebilir

https://sourceforge.net/projects/dex2jar/?source=type_redirect

ve programını açarak  “./d2j-dex2jar.sh”  aracılığıyla çalıştırabilirsiniz.

Yukarıda ekran görüntülerinde de görüldüğü gibi örnek olarak  “BGA_Mucahid.apk”  uygulaması decompiler edilerek  “output.jar”  dosyasına dönüştürülmüştür.

JD-GUI

Uygulamanın kaynak kodlarını görmeye yardımcı Java decompiler aracıdır. Classes.dex dosyasının dex2jar yardımıyla .jar dosyasına dönüştürülmesinden sonra jd-gui ile bu jar dosyasını açarak uygulamanın kaynak kodlarına erişebiliriz. Buradan indirebilirsiniz.

JD-GUI programı, dex2jar programı ile decompiler ettiğimiz  “.jar”  uzantılı java binary dosyalarını source koda çevirmemize yarayan bir decompiler aracıdır. Kullandığınız işletim sistemine göre uygun versiyonu;

http://java-decompiler.github.io/

adresinden indirebilirsiniz.

Bununla alakalı kısa bir örnek yapacak olursak adımlar şu şekildedir;

  • Öncelikle indirmiş olduğumuz  .jar  uzantılı JD-GUI programını  “java -jar jd-gui-1.4.0.jar”  komutuyla çalıştırıyoruz
  • Sonra grafik arayüze sahip olduğumuz programımızda “File” sekmesinden “Open File”  tuşuna basarak gelen dizin ekranından az önce “Dex2jar”  programı ile oluşturduğumuz  “output.jar” dosyasını seçiyoruz.
  • Bu işlemleri, oluşturulmuş olan “output.jar” dosyasını  JD-GUI  içerisine sürükle bırak yaparak da bu işlemleri kısa yoldan tanımlayabilirsiniz.

Decompiler işlemi sonucunda ise android gelişiricinin yazmış olduğu kodları elde ediyoruz.

APK Easy Tool (APK Tool GUI)

Apk Easy Tool, üzerinde çalıştığınız uygulamalar için APK dosyalarını yönetmenizi, decompile ederek içerisindeki dosyaları okunabilir hale getirmenizi, derlemenizi ve imzalamanızı sağlayan bir uygulamadır. Aslında bu araç daha önce de Mobil Uygulama Testlerinde Kullanılabilecek Araçlar yazımızda da bahsettiğim APKtool aracının arayüz aracılığıyla daha kolay bir kullanım sağlamasıdır.

İndirme Linkleri : 

Kullanımı :

  • Yukarıdaki indirme linkinden taşınabilir .zip dosyasını veya kurulum dosyasını indirebilirsiniz.
  • Kurulum için .msi dosyasını indirmeniz gerekecek fakat taşınabilir dosya da yalnızca .zip dosyasını açarak .exe dosyasını çalıştırmalısınız.

Uygulama arayüzü açıldıktan sonra “Select APK” butonuna tıklayarak üzerinde çalışmak istediğiniz mobil uygulamanın .apk dosyasını seçin. Ayrıca bu işlemi yapmak yerine .apk dosyasını APK Easy Tool arayüzü üzerine sürükleyip bırakarak da yapabilirsiniz.

  • Uygulama dosyası seçildikten sonra Decompile butonuna basarak  ayıklama işlemini yapabilirsiniz.
  • Burada “Decompile name” için paketi çıkarmak istediğiniz bir klasör ismi ve bu ayıkladığınız klasörle işiniz bittikten sonra derlemek istediğiniz de uygulama paketine vermek istediğiniz ismi “Compile name” alanını doldurmanız gerekecek.
  • Uygulamanın paket içerisindeki dosyaları ayıklandığı default olarak “Decompiled APKs” dizini içerisinde olacaktır. İsterseniz bu dizini değiştirerek klasörü başka bir yere çıkartabilirsiniz. Bunun için “change” butonuna basarak bilgisayarınızda herhangi bir dizin seçmeni yeterli olacaktır.
  • Decompiled edilen paket dosyaları tekrar derlenmek istendiğinde ise “Recompiled APKs” dizini içerisinde oluşturulacaktır. Aynı yöntemle dizini de değiştirebilirsiniz.

Smali, Classes.dex dosyasının açılmış haline denir. Baksmali ise Classes.dex dosyasının düzenlenip tekrar kapanmış haline denir. Uygulamanın smali kodu üzerinden değişikler yapabilir ve programın işleyişine müdahale edebilirsiniz.

Framework bölümü, Apk veya Jar  dosyasının android sürümüne uygun dosyaları oluşturmak için kullanılır. Rom uygulaması ise o roma ait, 3.parti bir uygulama ise Android sürümüne uygun herhangi bir romdan alınabilir. Framework dosyaları Rom dosyalarını açıp kapatmak içindir.

Her bir işlem için ayrı bir dizin oluşturulacaktır.

Herhangi bir hata ile karşılaşmanız durumunda ise Log Output bölümünde logları görüntüleyebilir veya uygulamanın klasör oluşturduğu noktaya gidebilirsiniz. Bu dosya için yine “BelgelerAPK Easy ToolLogs” dizinine bakabilirsiniz.

Ayrıca derlediğiniz uygulamayı cihazınıza kolayca kurabilirsiniz. Cihazınız bilgisayara kablo ile bağlı durumda ve ayarlarınızda “USB Debugging” ve “Bilinmeyen Kaynaklar” bölümleri aktif durumda ise “Install APK” butonuna basarak uygulama paket dosyasını cihazınıza yüklemiş olacaksınız.

admin

Ben Nurullah Tayıpoğlu 20 yıllık Matematik Öğretmeni ve Eğitim Koçu 1991 yılından beri bilgisayarla iştigal ediyor. Commodore bilgisayarla başlayan teknoloji… 20 Yıllık Matematik Öğretmeni ve eğitim koçundan Her seviyeye uygun özel matematik dersi. ?? YKS-LYS-KPSS-TEOG-ALES-DGS HİZMETLERİ

%d blogcu bunu beğendi: