Merhaba sizlere elmas değerinde tecrübelerden sağlam kaynaklardan araştırdığım deneyimli rehberlik edecek fena ve kritik konulara değineceğim. Bu gibi konuların çok araştırılsada türkçe kaynakların yetersiz oluşu bir çok arkadaşımızın (zamanında benim dahi) çok zorlanarak yollarımızın sapmasına sebep olmuştur. Yılmayarak MH ailesinden @nader11ndeu ve @LeftSpace reislerin yardımı ve yönlendirmeleriyle tabi bu (1.5 sene öncesine dayanıyor siz düşünün gerisini) asearch becerim gelişti sayelerinde ve ingilizce bilmiyordum onların sayesinde ufkum açıldı, onlara çok müteşekkirim.
Dipnot : @nader11ndeu , @LeftSpace bana kişisel olarak özel bir davranışta veyahut yardımda bulunmamıştır. MH ailesinin her değerli üyesine yapmaktadırlar. Bana sadece "Bu yol bu ve çıkış kapısıda sonunda sadece bu yolu aş" denildi. Bende o yolu halen aşmış değilim, hayat şartlarımdan ötürü aksaklıklar ve kopukluklar yaşadım.
Herneyse daha fazla sıkmadan geçelim değerli konumuza tamamen ingilizce kaynaklardan sağlam kaynaktır.
FORUM KURALLARI GEREĞİ 20 RESİMDEN FAZLASINI KABUL ETMEMEKTE OLDUĞU İÇİN KONU İÇERİSİNDE UĞRAŞTIM DEĞİŞİKLİKLER YAPMAK ZORUNDA KALDIM BİLGİNİZE!
Dipnot : @nader11ndeu , @LeftSpace bana kişisel olarak özel bir davranışta veyahut yardımda bulunmamıştır. MH ailesinin her değerli üyesine yapmaktadırlar. Bana sadece "Bu yol bu ve çıkış kapısıda sonunda sadece bu yolu aş" denildi. Bende o yolu halen aşmış değilim, hayat şartlarımdan ötürü aksaklıklar ve kopukluklar yaşadım.
Herneyse daha fazla sıkmadan geçelim değerli konumuza tamamen ingilizce kaynaklardan sağlam kaynaktır.
FORUM KURALLARI GEREĞİ 20 RESİMDEN FAZLASINI KABUL ETMEMEKTE OLDUĞU İÇİN KONU İÇERİSİNDE UĞRAŞTIM DEĞİŞİKLİKLER YAPMAK ZORUNDA KALDIM BİLGİNİZE!
Tersine Mühendislik Online Oyunlar - Dragomon Hunter
İçin bir Paket Kaydedici oluşturma
Dragomon Avcısı
Yasal Uyarı: Dragomon Hunter tersine mühendislik sadece eğitim amaçlı yapılmıştır. Aşağıda verilen bilgilerin her türlü kötü amaçlı amaçla kullanılmasına izin vermiyorum. Bulunan tüm istismarlar Aeria Games'e gönderildi ya da zaten düzeltildi.
Genel bakış:
İlk yazımda, Dragomon Hunter oyunu için mühendisliği tersine çevirip paket kaydedici ve editörün nasıl oluşturulacağını göstereceğim. Belki gelecek bir blogda kendi paketlerinizi nasıl göndereceğinizi göstereceğim.
Paketlerden başlayarak, hareket etme, eşya satın alma, istismar bulma ve yapmak istediğiniz her şeyi yapabilme özelliğine sahip bir bot oluşturmak için gerekli işlevleri bulmanın en kolay yoludur.
Dragomon Hunter, Aeria Games tarafından yayınlanan yeni bir MMORPG. Burada kullanılan metodoloji her oyuna uygulanabilir, ancak bugün çoğu oyun nProtect GameGuard, AhnLab HackShield veya XIGNCODE3 gibi çok müdahaleci anti-hile yazılımlarıyla paketlenmiş durumda.
Bu anti-hile yazılımları, algılanan hilelerin bilinen kalıplarını tarayarak anti-virüs yazılımına benzer şekilde çalışır ve aldatma yazılımı olarak gördüğü herhangi bir yazılımı çalıştırıyorsanız oyunu kapatır. Ayrıca, genellikle OpenOcess, ReadProcessMemory ve Ring 3'teki WriteProcessMemory gibi API'leri kullanmamanız için Ring 0'daki belirli API'leri kancalayarak Ollydbg veya Cheat Engine gibi analiz yazılımlarını kullanmanızı engelleyen bir çekirdek modu sürücüsü vardır (Bu API'ler şunlardır: Genellikle analiz için kullanılır.) Ayrıca, bu anti hileleri anti-hata ayıklama teknikleri kullanır ve aynı zamanda anti hile veya korumalı oyunun herhangi bir kodunu değiştirmediğinizden emin olmak için bellek bütünlüğü taramalarını çalıştırır.
Bu hileli oyunlardan kurtulmanın kolay yolu, onları çalıştırmaktan alıkoymak olurdu, ancak zamanın% 95'i, oyuna 1-5 dakika kala oyun sunucusundan ayrılacaksınız. Bunun nedeni, çoğu hile hilesinin, anti hile işleminin hala devam etmesini sağlamak için genellikle "kalp atışı paketi" olarak adlandırılan şeye sahip olmasıdır. Sunucu, istemcinize bir paket gönderir, sonra da anti-hile işlevini çağıran kandırmaya bağlı olarak bazı algoritmaları çalıştırmak, doğru verileri döndürür ve buradan veriyi sunucuya geri gönderir. Sunucuya gönderilen veriler yanlışsa veya hiç gönderilmediyse, bağlantınız kesilir. Yükleyebileceğiniz yazılımın bir lisans anahtarı gerektirdiği gibi çalışır. Yanlış bir anahtar takarsanız, yazılım çalışmaz. Ancak, bu anti hileleri ile,
Bunun, özellikle nProtect Gameguard for ET tarafından forumda
Gelecekteki bir blog yazısında, kendimi "World # 1 Anti-Cheat" olarak da bilinen anti hile XIGNCODE3'ü nasıl analiz edeceğimi ve nasıl yazacağımı yazacağım. (anti hile içinde başvurulan dizelerden biri ...)
Dragomon Hunter, altın çiftçiliğine sahip bir MMORPG taşmasıdır, paketlenmemiş herhangi bir anti-hile yazılımı içermez, paketlenmez, gizlenmemiş kod içermez ve geri dönüşüme nasıl girileceğini öğrenmek isteyenler için iyi bir başlangıç olacağını düşündüm Online oyunlar ve genel olarak tersine mühendislik. Yani, başlayalım!
NOT: 1/28 / 16'dan itibaren, Aeria Games, Dragnon Hunter'a XIGNCODE3'ü ekledi; bu, nasıl atlanacağını bilmiyorsanız, aşağıda gösterilen analizi yapmanıza engel olacak. Halihazırda, XIGNCODE3'ü başlatan ve başlatma işlemini gerçekleştirmeden gerçeği döndürmek için değiştiren fonksiyonu bularak kolayca yenilebilir bir "kalp atışı" paketi yoktur.
(Mov eax, 1 ve işlevin tepesinde bir dönüş yerleştirmek kadar basittir.)
İhtiyacınız Olanlar:
İçin bir Paket Kaydedici oluşturma
Dragomon Avcısı
Yasal Uyarı: Dragomon Hunter tersine mühendislik sadece eğitim amaçlı yapılmıştır. Aşağıda verilen bilgilerin her türlü kötü amaçlı amaçla kullanılmasına izin vermiyorum. Bulunan tüm istismarlar Aeria Games'e gönderildi ya da zaten düzeltildi.
Genel bakış:
İlk yazımda, Dragomon Hunter oyunu için mühendisliği tersine çevirip paket kaydedici ve editörün nasıl oluşturulacağını göstereceğim. Belki gelecek bir blogda kendi paketlerinizi nasıl göndereceğinizi göstereceğim.
Paketlerden başlayarak, hareket etme, eşya satın alma, istismar bulma ve yapmak istediğiniz her şeyi yapabilme özelliğine sahip bir bot oluşturmak için gerekli işlevleri bulmanın en kolay yoludur.
Dragomon Hunter, Aeria Games tarafından yayınlanan yeni bir MMORPG. Burada kullanılan metodoloji her oyuna uygulanabilir, ancak bugün çoğu oyun nProtect GameGuard, AhnLab HackShield veya XIGNCODE3 gibi çok müdahaleci anti-hile yazılımlarıyla paketlenmiş durumda.
Bu anti-hile yazılımları, algılanan hilelerin bilinen kalıplarını tarayarak anti-virüs yazılımına benzer şekilde çalışır ve aldatma yazılımı olarak gördüğü herhangi bir yazılımı çalıştırıyorsanız oyunu kapatır. Ayrıca, genellikle OpenOcess, ReadProcessMemory ve Ring 3'teki WriteProcessMemory gibi API'leri kullanmamanız için Ring 0'daki belirli API'leri kancalayarak Ollydbg veya Cheat Engine gibi analiz yazılımlarını kullanmanızı engelleyen bir çekirdek modu sürücüsü vardır (Bu API'ler şunlardır: Genellikle analiz için kullanılır.) Ayrıca, bu anti hileleri anti-hata ayıklama teknikleri kullanır ve aynı zamanda anti hile veya korumalı oyunun herhangi bir kodunu değiştirmediğinizden emin olmak için bellek bütünlüğü taramalarını çalıştırır.
Bu hileli oyunlardan kurtulmanın kolay yolu, onları çalıştırmaktan alıkoymak olurdu, ancak zamanın% 95'i, oyuna 1-5 dakika kala oyun sunucusundan ayrılacaksınız. Bunun nedeni, çoğu hile hilesinin, anti hile işleminin hala devam etmesini sağlamak için genellikle "kalp atışı paketi" olarak adlandırılan şeye sahip olmasıdır. Sunucu, istemcinize bir paket gönderir, sonra da anti-hile işlevini çağıran kandırmaya bağlı olarak bazı algoritmaları çalıştırmak, doğru verileri döndürür ve buradan veriyi sunucuya geri gönderir. Sunucuya gönderilen veriler yanlışsa veya hiç gönderilmediyse, bağlantınız kesilir. Yükleyebileceğiniz yazılımın bir lisans anahtarı gerektirdiği gibi çalışır. Yanlış bir anahtar takarsanız, yazılım çalışmaz. Ancak, bu anti hileleri ile,
Bunun, özellikle nProtect Gameguard for ET tarafından forumda
Bağlantıları görmek için lütfen
Giriş Yap
forumda nasıl yazılacağı hakkında daha fazla bilgi
Bağlantıları görmek için lütfen
Giriş Yap
Burada:
Bağlantıları görmek için lütfen
Giriş Yap
Bağlantıları görmek için lütfen
Giriş Yap
Bağlantıları görmek için lütfen
Giriş Yap
Bağlantıları görmek için lütfen
Giriş Yap
Bağlantıları görmek için lütfen
Giriş Yap
Gelecekteki bir blog yazısında, kendimi "World # 1 Anti-Cheat" olarak da bilinen anti hile XIGNCODE3'ü nasıl analiz edeceğimi ve nasıl yazacağımı yazacağım. (anti hile içinde başvurulan dizelerden biri ...)
Dragomon Hunter, altın çiftçiliğine sahip bir MMORPG taşmasıdır, paketlenmemiş herhangi bir anti-hile yazılımı içermez, paketlenmez, gizlenmemiş kod içermez ve geri dönüşüme nasıl girileceğini öğrenmek isteyenler için iyi bir başlangıç olacağını düşündüm Online oyunlar ve genel olarak tersine mühendislik. Yani, başlayalım!
NOT: 1/28 / 16'dan itibaren, Aeria Games, Dragnon Hunter'a XIGNCODE3'ü ekledi; bu, nasıl atlanacağını bilmiyorsanız, aşağıda gösterilen analizi yapmanıza engel olacak. Halihazırda, XIGNCODE3'ü başlatan ve başlatma işlemini gerçekleştirmeden gerçeği döndürmek için değiştiren fonksiyonu bularak kolayca yenilebilir bir "kalp atışı" paketi yoktur.
(Mov eax, 1 ve işlevin tepesinde bir dönüş yerleştirmek kadar basittir.)
İhtiyacınız Olanlar:
- X86 Assembly, Reverse Engineering ve Win32 API'leri bilgisi
- Aeria Oyunları Hesabı (Bağlantıları görmek için lütfen Giriş Yap)
- Dragomon Çevrimiçi (Bağlantıları görmek için lütfen Giriş Yap)
- Ollydbg v1.10 (Bağlantıları görmek için lütfen Giriş Yap)
- IDA Pro (Bağlantıları görmek için lütfen Giriş Yap)
- IDE Fonksiyonu Dizgesi Associate Plugin Sirmabus (Bağlantıları görmek için lütfen Giriş Yap)
- Keygener Assistant v2.0 (Bağlantıları görmek için lütfen Giriş Yap)
Analiz:
UYARI: Eğer bir çeşit kötü amaçlı yazılımları analiz ediyor olsaydık, aşağıda gösterdiğim süreç farklı olurdu ve VMWare altında çalıştırılmalı, böylece bilgisayarınızı etkilemezsiniz. Ancak, bu güvenilir bir kaynaktan, Aeria Oyunları olduğundan, bu durumda gerekli değildir.
Öncelikle, Dragomon Hunter'ın başlatıcıyı çalıştırarak en son sürüme güncellendiğinden emin olun.
UYARI: Eğer bir çeşit kötü amaçlı yazılımları analiz ediyor olsaydık, aşağıda gösterdiğim süreç farklı olurdu ve VMWare altında çalıştırılmalı, böylece bilgisayarınızı etkilemezsiniz. Ancak, bu güvenilir bir kaynaktan, Aeria Oyunları olduğundan, bu durumda gerekli değildir.
Öncelikle, Dragomon Hunter'ın başlatıcıyı çalıştırarak en son sürüme güncellendiğinden emin olun.
Bağlantıları görmek için lütfen
Giriş Yap
Keygener Assistant'ı açın, "Tarama" sekmesine tıklayın ve Dragomon Hunter'ı kurduğunuz klasördeki Game.bin dosyasına göz atın. "Files of type:" yazısının "Tüm Dosyalar" ı seçtiğini veya dosyayı aşağıdaki fotoğrafta gösterildiği gibi Keygener Assistant'da bulamadığınızdan emin olmanız gerekir. (.Bin uzantısına sahip olsa da, PE başlığına göre bir .exe dosyasıdır)
Bağlantıları görmek için lütfen
Giriş Yap
Keygener asistanı, Game.bin dosyasının paketlenmediğini ve bize kullanılan derleyicinin yanı sıra tespit ettiği tüm karma ve kripto imzalarının ofsetlerini bize verdiğini gösterir. Analizimize devam etmek için oyunu IDA Pro'ya atalım.
Bağlantıları görmek için lütfen
Giriş Yap
IDA Pro oyunu doğru bir şekilde analiz eder ve kodun hiçbiri gizlenmez gibi görünmez.
Bağlantıları görmek için lütfen
Giriş Yap
İthalat bölümü dikkat çekicidir.
Bağlantıları görmek için lütfen
Giriş Yap
Dizeler de şifreli görünmüyor.
Çoğu durumda, bir oyun yerine kötü amaçlı yazılımları analiz ediyorsanız, yukarıda belirttiğim şeyi doğrulamak için daha fazla analiz yapmanız gerekir.
Oyun , yıllar içinde elde ettiğim oyunların önceki tersine çevrilmiş bilgisinden Gamebryo Game Engine (
Bağlantıları görmek için lütfen
Giriş Yap
) kullanılarak oluşturulmuş gibi görünmektedir ve aynı zamanda IDA'daki başvurulan dizeleri kullanarak da sonuçlandırılabilir. fotoğraf aşağıda.
Bağlantıları görmek için lütfen
Giriş Yap
Çevrimiçi oyunları analiz ederken, yapmayı sevdiğim ilk şeylerden biri, Sirmabus tarafından IDA Function String Associate eklentisini çalıştırmaktır. Bu eklenti, başvurulan bir dizeyi içeren her işlevin en üstünde bir yorum oluşturur. IDA'da, ALT + 6 tuşlarına basın ve aşağıdaki fotoğrafta gösterilen menü görünecektir.
Bağlantıları görmek için lütfen
Giriş Yap
"Devam" ı tıklayın ve eklenti analiz etmeye başlayacak. Oyunlar çok büyük olabileceği için bu biraz zaman alabilir. Bu oyun sadece 14MB kadar uzun sürmemeli. Ardından, aşağıda gösterildiği gibi bir dizeye başvuran her bir işlevin üzerine yorumlar görmelisiniz.
Bağlantıları görmek için lütfen
Giriş Yap
Artık tüm bu yerleşmiş olduğumuza göre, bir paket editörü oluşturma hedefimize ulaşalım. Soru şu, nereden başlıyoruz? Paketlerin gönderilmesi ve alınması işlevlerini bulmak için yapabileceğimiz birçok farklı yol var.
Kullanabileceğiniz bir tür metodoloji, muhtemelen bir sunucuya gönderilen bir pakette kullanılacak olan oyuncu koordinatları gibi bazı üyelerin bir işaretçisi bulmak olacaktır. Ardından, kodun bu işaretçiye eriştiğini, karakter hareket ettirildiğini ve oyuncu hareket paketini göndermekle sorumlu olan kodu bulana kadar izleyebileceğinizi öğrenebilirsiniz.
En iyi yöntem, sondan başlamaktır. Bununla ne demek istiyorum? Windows üzerinde çalıştığımızdan, gönderdiğimiz en son yer paketin ne zaman biteceğine ya da alırsak ortaya çıkacak ilk yere ws2_32.dll tarafından verilen Winsock işlevlerinden biri olacaktır. Bu nedenle, paketin şifrelenmesi için şifrelenmeden önce ve muhtemelen gelecekte şifrelenmiş olduktan sonra alınan paketlerin nasıl kaydedileceğiyle ilgili bir gönderi yapmadan önce, bu işlevlerden bir tanesinin nasıl geri döneceğini göstereceğim.
Winsock Gönderme API'ları:
- gönder (Bağlantıları görmek için lütfen Giriş Yap)
- sendto (Bağlantıları görmek için lütfen Giriş Yap)
- WSASend (Bağlantıları görmek için lütfen Giriş Yap)
Winsock API'larını Al:
- recv (Bağlantıları görmek için lütfen Giriş Yap)
- recvfrom (Bağlantıları görmek için lütfen Giriş Yap)
- WSARecv (Bağlantıları görmek için lütfen Giriş Yap)
Bağlantıları görmek için lütfen
Giriş Yap
WSASend'e yapılan referanslara bakarak gönderim paketi işleviyle başlayalım.
Bağlantıları görmek için lütfen
Giriş Yap
Görünüşe göre WSASend adını veren iki işlev var. İlk fonksiyonda bulduğum bir şeye bakalım.
Bağlantıları görmek için lütfen
Giriş Yap
WSASend çağrısının altındaki WSAAsyncSelect'e bir çağrı var. Eğitimli bir tahminde bulunacağım, muhtemelen oyunda çalışırken birden fazla açık bağlantı olduğunu, belki de WSASend adını verdiğim iki fonksiyon olduğundan. WSASend'de tampon sayımı parametresinin her zaman 1 olduğunu görmek, oyunun paketin sırasının yanı sıra bir sonraki paketin gönderilmesini sağlamak için paketin başarıyla gönderildiğini bilmesi için WSAAsyncSelect'i de kullanabilir. WSAAsyncSelect çağrısından önce
" mov [esi + 288Ch], eax " olan satır da ilginç. Belki de bir tür muteks veya başka bir paket gönderilmeden önce ayarlanması gereken ağ yapısının veya sınıfının bir üyesidir.
WSASend'i çağıran ikinci işleve bakalım.
Bağlantıları görmek için lütfen
Giriş Yap
ds çağrısı: WSASend
cmp eax, 0FFFFFFFFh
jnz kısa loc_F1E730
Burada ilk fonksiyona benzer bir şey görebiliyoruz. Fonksiyonda daha yukarıdan bakarsak, WSAAsyncSelect'e başka bir çağrı görebiliriz.
Yine, muhtemelen bazı ağ sınıfının veya işaretçinin + 0x288C'de bulunan yapısının aynı üyesini buluyoruz. Bu üyeyi işaret ediyorum, çünkü bu adreste Ollydbg'deki bellek görüntüleyici aracılığıyla bir kesme noktası yerleştirebilir ve ağ işaretçisinin bir üyesinden geri izleyebiliriz.
Bu noktada, Ollydbg kullanarak oyunu dinamik olarak analiz etmeye başlamak istiyorum. Bu yüzden oyunu yükleyin ve Ollydbg'i Game.bin'e ekleyin.
Aşağıda gösterildiği gibi WSASend'e bir kesme noktası yerleştirin. (Bir kesme noktası ayarlamak için Olly'de F2 kısayol tuşunu kullanabilirsiniz)
Bağlantıları görmek için lütfen
Giriş Yap
Genelde oyunun sohbet işlevini kullanarak izlerim. Oyuna "merhaba" yazın ve enter tuşuna basın. Ollydbg, WSASend üzerinde duracak ve aşağıdaki fotoğrafa benzer bir şey görmelisiniz. (Ayrıca, kesme noktasını çok uzun süre açık bırakmadığınızdan veya sunucudan bağlantının kesileceğinden emin olun.)
Bağlantıları görmek için lütfen
Giriş Yap
Şimdi, paketlerin şifreli olup olmadığını kontrol edelim. Adresi WSABUF dizisinin işaretçisine ulaştırın. (pBuffers) Benim durumumda, bu 0x0018FC10 olacaktır.
WSABUF yapısının C ++'da neye benzediği:
Bağlantıları görmek için lütfen
Giriş Yap
"len", tamponun uzunluğudur ve "buf", tamponun bir işaretçisidir. Yalnızca bir arabelleğe sahip olduğumuzdan, (nBuffers = 1 ve IDA'da da daha önce de gösterildiği gibi) görünce dizi şöyle görünecektir:
0x0018FC10 (pBuffers) + 0x00 = arabellek uzunluğu (0x0018FC10)
0x0018FC10 (pBuffers) + 0x04 = arabelleğe işaretçi (0x0018FC14)
Tamponun işaretçisine ulaşmak için neden 4 tane ekliyoruz? İmzasız bir 32 bit yazılım uzunluğunda 4 bayt boyutuna sahiptir. Arabellek işaretçisi de bir 4 bayt adresidir.
Bağlantıları görmek için lütfen
Giriş Yap
Bağlantıları görmek için lütfen
Giriş Yap
Bağlantıları görmek için lütfen
Giriş Yap
İşte yine "merhaba" yazdığımda olan şey.
Bağlantıları görmek için lütfen
Giriş Yap
"merhaba" göndermeye çalışalım ve ne olduğunu görün.
Bağlantıları görmek için lütfen
Giriş Yap
Paketlerin şifrelenmiş olduğunun farkında olduğumuza göre, şifrelenmeden ve arabellek boyutundan önce arabelleği alan bir işleve geri döneceğiz ve böylece sunucuya gönderilen paketleri günlüğe kaydetmek için kancalarımızı buraya yerleştirebiliriz. Genellikle bunun için en iyi yer, arabelleği şifreleyen işleve yapılan çağrıdan önce doğrudur. Bunu yapmak için, tekrar WSASend'e bir kesme noktası yerleştirelim, bir sohbet paketi gönderin ve işlevin dönüş adresini bulmak için yığına bakalım. İade adresi, WSASend'e ilk defa bir kesme noktası yerleştirdiğimiz fotoğrafın yukarısında gösterildiği gibi yığının en üstündeki değer olacaktır.
Ollydbg, aramanın IDA'da analiz ettiğimiz ikinci işlevden yapıldığını gösterir. İşlevin nereden geldiğini görmek için geri dönene kadar bu işlevi izleyin.
Bağlantıları görmek için lütfen
Giriş Yap
Oyunun, bir paketin gönderilmeye hazır olup olmadığına veya gönderilmeye hazır olup olmadığını bildirmek için bir pencere mesajı kullandığı anlaşılmaktadır. Bir pencere mesajı göndermek için 0x9C40 ileti parametresini kullanarak WSAAsyncSelect kullanarak birden çok örnek olmuştur ve yukarıdaki fotoğrafta, 0x9C41'in farklı bir mesaj parametresi kullanarak PostMessageW'ye bir çağrı görebilirsiniz. Yukarıdaki PostMessageW sadece paket gönderilmezse yürütür olduğundan, 0x9C41 paketin gönderilmediği oyunu bilgilendirir.
WSAAsyncSelect'e bir kesme noktası koyalım.
Bağlantıları görmek için lütfen
Giriş Yap
Bağlantıları görmek için lütfen
Giriş Yap
Bu işlev, WSAAsyncSelect çağrısı nedeniyle ilginç görünüyor ve ESI'de bulunan ağ sınıfı / yapısı için olduğu varsayılan işaretçi, WSASend'i çağıran işlevdekiyle aynıdır.
Tecrübemden ve kodu okumadan, bu işlevin çağrılması konvansiyonu "thiscall" dır çünkü ağ imleci fonksiyonun üstündeki ECX registerı vasıtasıyla ESI'ye geçirilir ve bu ekranın görebileceği bir başka parametreye sahiptir. Fonksiyonun sonunda RETN 4. Keygen Assistant, oyunun MSVC ++ kullanılarak derlendiğini, bunun da ağ işaretçimiz olarak da bilinen "bu" işaretçinin ECX'ten geçtiğini ve fonksiyonun yığının temizlenmesinden sorumlu olduğu anlamına geldiğini söyledi.
Montaj kodunu okursak, ikinci parametre bir yapının işaretçisidir.
İşlevin üst kısmına bir kesme noktası yerleştirin ve yığının üzerine itilen parametreyi analiz edelim.
Bağlantıları görmek için lütfen
Giriş Yap
Yukarıdaki fotoğrafta, yapının işaretçisi gösterilir. Yapının neye benzediğini açıklayacağım, ancak şimdi yapının ikinci üyesini hafıza görünümünde izlersek, ne elde edeceğimizi görelim.
Bağlantıları görmek için lütfen
Giriş Yap
Oraya bak! Şifrelenmeden önce paket tamponumuz var. Paketin başında, "merhaba" gönderdiğimiz ve şifrelenmiş arabelleğe baktığımızda, tamponun büyüklüğü 0x0017'dir.
Yapı, ilk parametrenin arabelleğin bazı karması veya daha sonra temizleme için kullanılan bir tür kimlik, ikinci üye arabelleğin başlangıcını işaret ediyor gibi görünür, üçüncü üye arabelleğin sonuna işaret eder ve dördüncü üye, arabellek için ayrılan belleğin sonuna bir işaretçi gibi görünebilir. Üçüncü üyeden (0x0E680279 - 0x0E680260) ikinci üyeyi çıkarırsak, sunucunun nihayet okuduğu ilk iki bayt dahil olmak üzere tüm arabelleğin boyutu olan 0x19 olur.
Şifrelenmeden önce bunun aslında tampon olduğundan emin olmak için test edelim. Hafıza görünümünde "merhaba" u "hell1" olarak değiştirin ve oyunda neyin göründüğünü görün.
Bağlantıları görmek için lütfen
Giriş Yap
Bağlantıları görmek için lütfen
Giriş Yap
Sohbet paketini alana kadar oyun bir mesaj göstermediğinden, sunucuya gönderilmeden önce arabelleği başarıyla değiştirdiğimiz anlaşılıyor.
Buradan bir paket kaydedici oluşturmak için, kodunuzda paketlerin içeriğini yazdıracak bir geri dönüşe atlayabilirsiniz. Görünüşe göre işimiz bitti!
Bununla ne başarılabilir?
Artık paketleri başarıyla kaydedip değiştirebildiğiniz için, istemci ile sunucu arasında gönderilen verileri değiştirip analiz edebilirsiniz. Bir adım daha ileri giderek kendi özel paketlerinizi nasıl göndereceğinizi veya paket şifrelemeyi ters çevirerek kendi özel oyun istemcinizi nasıl oluşturabileceğinizi öğrenebilirsiniz. (İpucu: Şifreleme işlevi, yukarıda gösterdiğim işlevde doğrudan çağrılır.) Bu, genellikle oyun geliştiricisi tarafından tasarlanmayan şeyleri gerçekleştirmek için oyun istemcisi tarafından normal olarak gönderilmeyen verileri göndererek oyunda kötüye kullanım bulmaya yol açar. Ayrıca, paketleri tuş vuruşlarını göndermek yerine oyun işlevlerini doğrudan arayarak sohbet, taşıma, ürün satın alma ve daha fazlası gibi işlevlere geri izlemek için de kullanabilirsiniz.
Bu blog yazısını yazarken bulduğum çevrimiçi oyunlarda bulunan basit ve çok yaygın bir istismar göstereceğim. Bugün birçok online oyunun bir çeşit “küfür” filtresi vardır çünkü oyun sağlayıcıları diğer oyunculara küfretmenizi istememektedir.
Oyunda "b*k" kelimesini söylersek ne olur?
Bağlantıları görmek için lütfen
Giriş Yap
Bağlantıları görmek için lütfen
Giriş Yap
Oyun, yemin filtresine karşı yazdığım metni karşılaştırdı ve onu çöple değiştirdi. "Tampon" demek için arabayı değiştirdiğimde neler olacağını görelim.
Bağlantıları görmek için lütfen
Giriş Yap
Bağlantıları görmek için lütfen
Giriş Yap
Oyun istemcisinin küfür filtresinin kontrolünde olduğunu ve sunucuya "bok" kelimesini gönderebildiğini görüyorum. Bu, başarılabilecek birçok istismardan sadece bir tanesidir. Paketlerle uğraşmak, yanlışlıkla giriş yaptığım kanalı ve oyuncuların geri kalanıyla çarpışmasına yol açtı, ancak bu istismar birkaç saat içinde düzeldi.
Sonuç
Oyun şirketleri ve diğer herhangi bir şirket, siber güvenliğe daha fazla çaba sarf etmelidir. En iyi uygulama, son kullanıcıya ne yapabildiklerinin en az kontrolünü vermektir. Oyun istemcisi tarafından kontrol edilen yemin filtresine sahip olmak yerine, sunucu tarafından kontrol edilmelidir. Her zaman, yalnızca iyi bir güvenlikle durdurulan sömürme, saldırı ve hack yapmaya çalışan insanlar olacaktır. Oyun şirketleri sık sık hacking, hile ve botting ile ilgili şikayetler alırlar, bu da oyuncuların çıkmasına neden olur, yani oyun şirketi para kaybeder. Ne yazık ki, çoğu oyun şirketi para harcamamak ya da güvenliğe odaklanmak istememektedir. Genellikle, hile ile mücadele girişinde yukarıda adı geçen hilelerden birini yaparlar.
Kaynak : Forum kuralları gereği kaynak belirtilememektedir. Kaynakta emeği geçen ve Tecrübelerini bizimle paylaştığı için teşekkürler.
Son düzenleme: