SonOyuncu Launcher Decompiling (Part 1)

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
CoreCheat CSGO
Griffin Premium
Katılım
10 May 2016
Mesajlar
1,766
Çözümler
5
Tepki puanı
720
Ödüller
14
Yaş
25
Sosyal
10 HİZMET YILI
YAZI EĞİTİM AMAÇLIDIR:

Eveeet. Uzun süredir ortalarda yoktuk. Burda adım adım nasıl SonOyuncu Launcherini açtığımızı anlatacağım.
Ben Lyceion başlayalım.

İlk olarak launcherimizi indirdik ve dosya konumuna geldik (%appdata%/.sonoyuncu (ne kadar yaratıcı)):
1704720023999.png


Burada bir bootstrap.exe miz var. Hemen analizini alalım:
1704720090834.png

Analiz sonucunda ne yazık ki packlenmiş gözükyor. Bunda klasik bir themida winlicense var. Programı açıp dump aldığımızda da bir VM konmadığını görüyoruz. O yüzden sihirli unpack işlemlerini yapalım ve ondan sonra inceleyelim:
1704720229386.png

Demek GO ha. İlginç bir seçim ama bu Themidayı açıklar. GO ile yazılıp derlenmiş programları ne yazık ki şu anda başka bir pack programı packlemiyor. Şimdi programın entrypointini düzeltiyoruz ve hemen IDA mıza atıyoruz ama şöyle bir durum var. GOLang biraz dosya boyutu ve içeriği konusunda eli bol bir dil. Yani dosyanın içinde debug sembollerinden tutun kullanılmayan bütün kütüphaneler, fonskiyonlar normalde print içindeki texti birleştirmek için bile compiler seviyesinde fonskiyon ekliyor yani elimizde saçma sapan şöyle bir görüntü olacak fonksiyonlar ve stringler:
1704720467745.png
1704720529861.png


Şimdi GOLang'in güzel tarafı, bu arkadaş gidiyor bütün sembolleri içinde obj dosyasıyla beraber taşıyor. E sen ne yaparsın, bu obje dosyasını alırsın, içinden çektikten sonra bunu gider ida ya scriptle basarsın (bkz.
Bağlantıları görmek için lütfen Giriş Yap
):
1704720754381.png
1704720795044.png



Artık inceleyebiliriz. İlk başta eğer start routinelerini takip edersek birkaç şeye ulaşıyoruz (Bu eğitim amaçlı bir yazı olduğundan sadece nasıl yapılacağını anlatacağım fakat son ürünü paylaşmayacağım. Burada linkleri de gizliyorum kendiniz basit bir araştırma ile yazdıklarımı yine kendiniz yapabilirsiniz):
1704720991386.png


Demek soup_win.exe he? Onu da araştıralım derken PACK li değilmiş. Kendisi de bir GO projesi. Hemen onun da metadatasını çekip inceleyelim:
1704721066925.png


Burada güncellemeler için bir güncelleme kontrol durumu var. Burada iki çözüm izleyebiliriz. Ya az önceki URL nin şuanki durumunu kopyalayıp lokalden hosts dosyası üzerinden yönlendirme yapabiliriz ki güncellemelerden kurtulalım ya da programı checksum kontrolü için patchleyip direkt olarak launcher güncel diyip açmasını sağlayabiliriz. Şu anlık updateri patchleyip devam edelim. Test amaçlı da bu soup.exe üzerinden unpacklediğimiz exe yi çalıştırtmayı deniyoruz çünkü onun da hashi farklı çalışırsa patchimiz başarılıdır:
1704721265510.png

Burada tam yazıyı yazarken kendisinin de hashini kontrol ettiğini fark edip bootstrapi de patchliyorum.
Galiba şu anki son durumda lokale yönlendirme yapıp hashleri yazıp kullanmak daha kolay olucak.
Şu anda soup_win.exe (SonOyuncu Updaterin kısaltması ama nedense çorba anlamında okumak daha çok hoşuma gidiyor çorba diyelim) ve elimizde bootstrap patchlenmiş bir şekilde duruyor.
Bundan sonraki yazımızda launcher.jar ve bunun jvm (java virtual machine) komutlarıyla birleştirilmiş halini inceleyeceğiz. Sonraki adım ise hacked clientin checksumını geçirip yükletip bununla servera girmek olucak. Birkaç kere serverları java versiyonundan yakalayan görmüştüm (yani sonoyuncu optifineli versiyon yükletiyor ve bu optifineli versiyonu düzenleyip kimsede olmayan bir signature veriyor. Server o versiyonu ordan tanıyor. Belki o imzayı alıp hacked cliente yazmamız gerekebilir).
Part 2 ne zaman gelir bilmiyorum bir ara uğraşırım. Bunu da gören so yetkilisi varsa bildireyim asla son bitmiş halini paylaşmayacağım. Tavsiyem şu GO işini salın bu arada.
Güncelleme gelir diye burdaki ve göstermediğim launcherin içindeki bütün serverdaki checksumdur vesairedir lokale çektim. Eğer konu üzerine güncelleme gelirse lokalden yönlendirip devam edeceğiz. Bu arada hile ile asla serverda oynamayacağım öyle görüntüler bekleyen arkadaşlar varsa size bu haber kötü gelicektir. Amaç sadece POC (Proof Of Concept) yani mümkünlüğünü gösterebilmektir. Yazı eğitim amaçlıdır ve hiç bir partta açık açık veri verilmeyecektir.
 
Onaylı Üye
Katılım
18 Şub 2019
Mesajlar
51
Tepki puanı
6
Ödüller
4
Yaş
27
7 HİZMET YILI
son oyuncunun indirmesinimi anlattın tam anlayamadım ama
 
Üye
Katılım
30 Ocak 2024
Mesajlar
2
Tepki puanı
1
Yaş
25
2 HİZMET YILI
Hocam iyi günler. Yazınız benim için çok faydalı oldu ve soup adlı çorbayı biraz karıştırdım ve patchledim. Güncel sanıyor yavrucak :D. Bootstrape baktığımızda belirli dataları çıkarıp launcherin bunları çekmesini sağlıyor sanırım. O yüzden ana işimizin launcherde olduğunu düşünüp ilerledim fakat IDAPRO olmadığından Jar üzerinde ida analizi yapamadım yardımınıza ihtiyaç duymaktayım. Hash kontrol kısmında da kafam çok karıştı ve bu kısımda takılı kaldım. Ayrıca, unpack işlemini yapamadım kafayı yiyorum theimidayı atlatamıyorum. Aynı şekilde konunun devamında ben de herhangi bir kaynak paylaşımı yapmayacağım. Konu üzerindeki yorumlarınız için teşekkür ediyorum. Discord üzerinden iletişime geçmek isterseniz memnun olurum (Konu sahibine...). Amacım sadece sistemi kavramaktır ve mümkün olduğunu göstermenizde yardımcı olmaktır.
 
Son düzenleme:
Onaylı Üye
Katılım
1 Eyl 2019
Mesajlar
52
Tepki puanı
7
Ödüller
6
Yaş
26
6 HİZMET YILI
Hiçbir şey anlamadım hile olarak mı geçiyor ne oluyor bu
 
CoreCheat CSGO
Griffin Premium
Katılım
10 May 2016
Mesajlar
1,766
Çözümler
5
Tepki puanı
720
Ödüller
14
Yaş
25
Sosyal
10 HİZMET YILI
Hocam iyi günler. Yazınız benim için çok faydalı oldu ve soup adlı çorbayı biraz karıştırdım ve patchledim. Güncel sanıyor yavrucak :D. Bootstrape baktığımızda belirli dataları çıkarıp launcherin bunları çekmesini sağlıyor sanırım. O yüzden ana işimizin launcherde olduğunu düşünüp ilerledim fakat IDAPRO olmadığından Jar üzerinde ida analizi yapamadım yardımınıza ihtiyaç duymaktayım. Hash kontrol kısmında da kafam çok karıştı ve bu kısımda takılı kaldım. Ayrıca, unpack işlemini yapamadım kafayı yiyorum theimidayı atlatamıyorum. Aynı şekilde konunun devamında ben de herhangi bir kaynak paylaşımı yapmayacağım. Konu üzerindeki yorumlarınız için teşekkür ediyorum. Discord üzerinden iletişime geçmek isterseniz memnun olurum (Konu sahibine...). Amacım sadece sistemi kavramaktır ve mümkün olduğunu göstermenizde yardımcı olmaktır.
Clienti geçirme mevzusu launcherda ama ilke updateri kapatım biraz proje structure ını incelemek istedim. Arada da GO Lang ile alakalı bilgi vereyim ne kadar zayıf olduğunu göstermek istedim. Javayla uğraşmakta çok problem yok zaten ne kadar kod binary ye dönse de istese de istemese de arkadaş jvm diye bir gerçek var. Ona bile gerek yok launcher arayüzü direkt jar çağırıyo çağırdığı jar ı çağırdığı argümanlar serverda da var. Onunla çağırınca zaten clientteki checklerin hepsini geçmiş oyunu açmış oluyorsun. İlerde ayrı bir kontrol varsa bilmiyorum o kadar bakınmadım ama hallolur.
 
Üye
Katılım
30 Ocak 2024
Mesajlar
2
Tepki puanı
1
Yaş
25
2 HİZMET YILI
Clienti geçirme mevzusu launcherda ama ilke updateri kapatım biraz proje structure ını incelemek istedim. Arada da GO Lang ile alakalı bilgi vereyim ne kadar zayıf olduğunu göstermek istedim. Javayla uğraşmakta çok problem yok zaten ne kadar kod binary ye dönse de istese de istemese de arkadaş jvm diye bir gerçek var. Ona bile gerek yok launcher arayüzü direkt jar çağırıyo çağırdığı jar ı çağırdığı argümanlar serverda da var. Onunla çağırınca zaten clientteki checklerin hepsini geçmiş oyunu açmış oluyorsun. İlerde ayrı bir kontrol varsa bilmiyorum o kadar bakınmadım ama hallolur.
Cevabınız için teşekkürler hocam. Jar kısmını ele aldıktan sonrası kolay diyorsunuz anlaşılan bugün biraz orayı inceleyeceğim. Konunun devamını sabırsızlıkla bekliyorum. Kolaylıklar dilerim.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst