MOBİL OYUNLARDA TERSİNE MÜHENDİSLİK

Merhaba arkadaşlar bu yazımda uzun bir süredir üzerinde uğraştığım bir çok yabancı kaynağı araştırıp farklı tekniklerde denediğim ama sonunda doğrusunu bulduğum tersine mühendislik yaptığım uygulama hakkında bilgi vereceğim.

Unity tabanlı mobil oyunlarda tersine mühendislik işlemini anlatacağım. Hemen hemen herkesi bildiği popüler bir oyun olan Subway Surfers oyununda coin manipülasyonu hakkında bilgi vereceğim. Öncelikle bazı dosya türlerini öğreneceğiz ve tersine mühendisliğin temelde ne olduğunu ve neye dayandığını görmüş olacağız.

TERSİNE MÜHENDİSLİK

Tersine mühendislik, mevcut bir sistemin, yazılımın veya donanımın nasıl çalıştığını anlamak için onu analiz etme ve parçalara ayırma sürecidir.

Amaç, bir ürünün tasarımını, işleyiş mantığını veya algoritmasını çözümleyip yeniden oluşturmak ya da geliştirmektir.
Bu yöntem genellikle şu alanlarda kullanılır :

  • Yazılım güvenliği (örneğin zararlı yazılımların analizi),
  • Donanım analizi (örneğin çip veya devre çözümleme),
  • Uyumluluk geliştirme (örneğin sürücü veya yedek parça üretimi),
  • Zayıf noktaları tespit etme ve savunma geliştirme.

Özetle, tersine mühendislik bir yazılımın geriye doğru çözümleme sürecidir.

Ben bu tersine mühendislik sürecinde Android işletim sisteminde çalışan mobil oyunun manipüle edilme sürecini aktaracağım

APK (Android Package Kit), Android işletim sisteminde uygulamaların kurulması için kullanılan dosya formatıdır.

Windows’taki .exe dosyalarına benzer şekilde, bir APK dosyası; uygulamanın kodlarını, kaynak dosyalarını, ikonlarını ve gerekli tüm bileşenlerini içinde barındırır.

Yani özetle, Android uygulamalarının yüklenebilir paket dosyasıdır.

Unity, çok platformlu bir oyun motorudur. Geliştiricilere 2D, 3D, VR ve AR oyunları ile simülasyonlar veya etkileşimli uygulamalar oluşturma imkânı sağlar.

C# programlama diliyle çalışır ve kullanıcı dostu arayüzü sayesinde hem profesyoneller hem de yeni başlayanlar tarafından yaygın şekilde kullanılır.

Mobil oyunların geliştirildiği platformlardan biridir.

Teknik süreçlere girmeden önce aşağıda ki 2 kavrama da dikkat çekmek isterim Tersine Mühendisliğin neden önemli olduğu ve Hile Önleme Sistemlerine

Mobil Oyunlarda Tersine Mühendislik Neden Önemlidir ?

Mobil oyunlar sadece eğlence araçları değildir. Arkalarında ciddi finansal sistemler, veri akışları ve kullanıcı etkileşim mekanizmaları bulunur. Google Play Store’ da ki popüler bir oyun, milyarlarca dolar gelir elde edebilir. Bu kadar büyük bir ekonomide tersine mühendislik, hem tehdit hem de savunma aracı olarak kritik bir konumdadır.

Anti-Cheat ve Hile Önleme Sistemleri

Mobil oyunlarda hile üretimi, tersine mühendisliğin kötüye kullanıldığı bir alandır. Bazı kişiler, oyunun belleğini veya kod yapısını analiz ederek sınırsız para, sağlık veya kaynak sağlayan mod’lar oluşturur. Bu durum, oyunun rekabet dengesini ve gelir modelini zedeler.
Bu nedenle geliştiriciler, tersine mühendislik tekniklerini savunma amaçlı da öğrenir. Hangi yöntemlerle APK dosyaları kırılıyor, hangi kütüphaneler zayıf kalıyor, hangi anti-tamper sistemleri etkili tüm bunlar, oyun güvenliğinin temel taşlarıdır.

SÜREÇ – 1

Çok kafa karıştırmadan her kesimden insanın anlayabileceği şekilde bilgi aktarmaya özen göstereceğim.

Öncelikle tersine mühendislik için kullandığım NOX emülatörümüzü bilgisayarımıza kuruyoruz kurulum işleminde sonra sanal makinadan 64 bitlik bir işletim sistemi oluşturuyoruz.

Sonrasında Google Play Store için hesap oluşturulalım ki play protect korumasına takılmayalım veya dışardan yükleyeceğimiz uygulama için herhangi bir çakışma vb. bir süreç yaşanmasın

SÜREÇ – 2

Bu süreç çerçevesinde bilgisayarımız için gerekli olan bazı önemli programlar da bulunmaktadır.

Bu programlar tedariğini yaptıktan, kurduktan ve gerekli ortam değişkenlerini ayarladıktan sonra ise diğer aşamaya geçebiliriz.

SÜREÇ – 3

Bu aşamada ilgili mobil oyuna .apk uzantılı mobil oyunumuzu 3. parti depolama olan bir sitede den indiriyoruz ondan sonra apktool aracımız ile .apk dosyasını klasör ayrıştırıyoruz(Ayrıştırma otomatik yapılmaktadır.)

Bu süreç içerisinde ilgili lib uzantılı klasöre giderek oradan libil2cpp.so uzantılı dosya’yı Il2CppDumper GUI Tool aracı ile ayrıştırıyoruz bu dosyanın içerisinde ki dump.cs uzantılı dosyadan gerekli yükseltmelerin yapılacağı yani mobil oyun içerisinde ki hangi değerlere(skor, can, para) gibi ifadelere müdahale edilecek ise onun offset yani bellekte ki adres konumuna müdahale edecek ilgili değeri buluyoruz.

SÜREÇ – 4

Bu süreç te ise bulduğumuz adresi bir not defterine kopyalıyoruz ve atamak istediğimiz hex değeri ayarlıyoruz tabi bu süreçte şimdi doğrudan HEX editör programımız devreye girecektir bu program ile bu sefer doğrudan libil2cpp.so dosyasını açıyoruz ve bizi karma karışık ifadeler, karakterler ve değerler karşılıyor tabi şöyle bir baktığımızda ise bazı kelimelerin ingilizce olduğunu görüyoruz bazı anlamlı şeylerde görünmüyor değil 🙂

Not defterine yapıştırmış olduğumuz offset adresimizi programda aratıp ilgili hedef adrese ulaşmaya çalışıyoruz ve sonunda ulaşıyoruz ve bu sefer hazırladığımız HEX Değerini dikkatlice doğru bir şekilde giriyoruz ve dosyamızı kapatıp kaydediyoruz.

SÜREÇ – 5

libil2cpp.so dosyasına gerekil müdahale yaptıktan sonra apktool ile klasörümüzü tüm ilgili dosyaları ile birlikte .apk uzantısına dönüştürüyoruz. Ve oyunumuzu çalıştırıyoruz.

Bu yazımızı da burada noktalayalım bir sonraki yazıda inşallah görüşmek üzere değerli okurlarım.

Bu sayfanın içeriğini kopyalayamazsınız

Scroll to Top