4 Nisan 2023 Salı

Dönüşüm Hikayeleri 3 - Reverse Xamarin APK

    S.A. Arkadaşlar,

    Bugün elimizde kodlarına erişilmesi gereken xamarin ile kodlanmış ve canlıya alınmış bir APK dosyası var. Bu dosyayı okunabilir kod haline getirmeyi hedefliyoruz. Bunu yapabilmek için de öncesinde DLL haline getirmemiz lazım. Kod haline getirmemizdeki amaç ise elimizdeki kod ile karşılaştırmak olacaktır. Bu süreçte yaşadığımız zorlukları, edindiğimiz tecrübeleri aktarmak istiyoruz. Hazırsak başlayalım.

    Hızlıca bir arama kurtarma çalışmalarına başlayınca karşımıza birçok yerde birbirine benzer, eskimiş çözümler (deprecated) çıktı. Bunları eski çözüm olarak ele almamız aslında Xamarin'in ZL4 algoritması ile sıkıştırma işine girmesidir. Bunu de 2022 yılı içinde yapmışlar. Bu döneme gelen kadar uygulanan çözümler birçok yerde mevcut ama sonraki dönemler için maalesef bu çözümler geçerli olmadı. Bu çözümlerden bazıları apk dosyasını direkt açmak veya farklı araçlarla açtıktan sonra DLL elde edilmesi, fakat bu son yaptığımız işlerde maalesef işe yaramadı ve bu DLL dosyalarını elde edemedik.

    Konuya daha fazla odaklanınca bununla ilgili bazı çözümler bulduk, bu çözümlerin bir çoğu da python ve C# projeleri üzerinden bazı adımları ilerletmek ve bahsettiğimiz DLL dosyalarını elde etmek üzerineydi. Bunların bazıları da yine zaman almasına rağmen maalesef çok başarılı geçmed, ta ki bu projeye denk gelene kadar...

       Bu projedeki adımların ilerletmesini ben mac üzerinden yapıyorum. Windows kullanıyorsanız yine benzer kurulumlar yapabilirsiniz. Kendi dokümanını takip etmek yeterli olsa bile bazı notlar paylaşmak isteriz. Öyleyse adım adım ilerleyelim.

  • Github projesini bilgisayarınıza kopyalayın.
  • Python yükleyin. mac üzerinde önceden kurulu geliyor olabilir, eğer kurulu değilse linkten adımları takip edebilirsiniz. Tek dikkat etmeniz gereken nokta python yüklediğinizde çalıştırma işlemlerini yaparken python3 olarak ele almanız gerekir. Eğer bunu yapmak istemiyorsanız önceki versiyonu aktif etmeniz gerekir ama bu biraz daha karmaşık bir işlem ve gerek de yok.
  • python setup.py install Yukarıdaki adımda son versiyonu yüklediyseniz python yerine python3 yazmayı unutmayın.
  • apktool yükleyin. Tüm işletim sistemleri kurulumu mevcut ama en kolay kurulumu brew ile yapmanız olabilir. Eğer bu paket yöneticisini kurmadıysanız buraya uğrayabilirsiniz.
  • apktool d yourapp.apk

  • pyxamstore unpack -d yourapp/unknown/assemblies/

    
    Yukarıdaki son 2 adımı da tamamladıysanız aynı klasör altında output adlı klasörde beklediğiniz DLL dosyalarının oluşmuş olması lazım. Eğer buraya kadar geldiyseniz gerisi artık nispeten daha kolay olacaktır.

    Elde ettiğimiz DLL dosyalarını decompile etmek için birden çok araç var. İşletim sistemi bağımsız bir araç olan AvaloniaILSpy veya windows ortamları için dotPeek kullanabilirsiniz. Bunlara benzer birçok araç mevcut, hangisini isterseniz kullanabilirsiniz. 

    Yazıyı aşağıdaki hadis ile bitirelim. 

"Yalnız şu iki kimseye gıbta edilir: Allah'ın kendisine ihsân ettiği malı hak yolunda harcayıp tüketen kimse; Allah'ın kendisine verdiği ilimle yerli yerince hükmeden ve onu başkalarına da öğreten kimse." (Buhârî, İlim 15, Zekât 5, Ahkâm 3, İ'tisâm 13, Tevhîd 45; Müslim, Müsâfirîn 268)

Hiç yorum yok:

Yorum Gönder