.apk Dosyasını Decompile ve Recompile Etmek

Yavuz Selim Ulucan
3 min readMar 30, 2019

--

Yazıda bir apk dosyasının içerisindeki kodlara erişimi, değişiklik yamayı ve daha sonra tekrardan herhangi bir IDE kullanmadan tekrardan compile edilmesini anlatacağım. Bana çok ilginç geldiğinde yazma gereği duydum.

Aşağıdaki işlemleri yapma mecburiyetim kodlara erişemiyor ve uygulamayı tekrardan revize edemiyor olmamdır. Çünkü önceki yazılımcı kodları almış ve gitmiş hatta kodlar hala onda mı ya da nerede bilen yok! (Gerçekten saçma bir durum..)

Aşağıdakilerin kurulu olması gerekiyor:

  • JAVA SDK veJRE
  • Android SDK

Daha sonra “apk tool” aracına ihtiyacımız var. Kullanım işlemleri işletim sisteminize göre linkte yer alıyor. Temel olarak hepsini aynı klasörde bulundurmanızı istiyor.

apk tool ile .apk aynı klasörde olmalı ya da environment üzerinden dosya yolu eklenerek de kullanılabilir

Daha sonra CMD üzerinde aşağıdaki kodu çalıştırarak apk’yı decompile etmenizi sağlıyor ve içerisindekileri görebiliyorsunuz.

apktool d -f -r sample.apk

apk içeriğine göre işlem süresi değişiyor

.smali uzantılı dosyaları değiştirebilirsiniz eğer şanlıysanız. Benim için yeterli oldu çünkü içerisinde sadece bir servis adresi değiştirmek gerekiyordu.

Değişikliklerinizi yaptıktan sonra aşağıdaki komut ile tekrardan recompile edebilirsiniz.

apktool b sample

(“sample” burada bir önceki komut ile oluşturulan klasörün adı)

sample klasörü içerisinde dist klasörü oluşturuyor ve yeni apk bunu içerisinde

Tabi ki bu kadar değil çünkü bu oluşturulan bu apk sign edilmemiş bir apk ve bunu herhangi bir cihaza yükleyemezsiniz. Şimdi apk mızı sign edelim.

Apk signer aracıyla bu işlemi hızlıca yapabilirsiniz. Nasıl yapıldığı burada anlatılmış.

Son olarak içerisindeki kodları nasıl göreceğiz. Bunun için buradan gerekli indirmeyi yaptıktan sonra .dex uzantılı dosyaları aynı klasöre kopyalamanız gerekecek ve buradan CMD ile hızlıca işlemleri yapabileceksiniz.

d2j-dex2jar classes.dex

komut çalıştırıldığında .jar dosyası oluşacaktır.

Bu .jar dosyasını JD-GUI ile görüntüleyebilirsiniz.

Peki bu sadece görüntüleme aracı ben nasıl editleme yapacağım derseniz aşağıdaki kodu çalıştırarak .zip olarak erişimini sağlayabilir tekrardan jar yapabilir ve apk’nızı recompile edebilirsiniz. Hayır jd-gui sadece görüntüleme değil aynı zamanda resourceları kaydetmenizi de sağlar.

file menüsünden save all resources dediğinizde herşeyi zip olarak kaydetmenizi sağlar.

Teşekkürler umarım kullanmak zorunda kalmazsınız çünkü riskli bir yol kesinlikle. Çok fazlada detaylandırmaya gerek yok diye düşünüyorum bu nedenle.

--

--