Jump to content
Araştır
  • Diğer seçenekler ...
Sonuçları bul ...
Sonuçları bul ...
IndianaPOLIS

(C++) BetaShield AntiCheat Source!

Önerilen Mesajlar

Alıntı
@ IndianaPOLIS, öncelikle DLL'nin ne olduğundan bahsedeyim biraz sana. Olayları karıştırmışsın.

DLL, ingilizce açılımı 'dynamic load library' olan, Windows platformu için fonksiyon/sınıf eklenti kütüphanelerine verilen isimdir. DLL dosyalarının çalıştırılabilir (EXE) dosyalardan farkı, birden fazla veya farklı EXE dosyaları ile aynı anda çalışabilmesidir. DLL dosyaları genellikle paylaşımlı kütüphaneler yazarken kullanılır, örneğin soket sistemi, ses eklentileri, 3d render kütüphaneleri (directx vs.) genellikle dll olarak hazırlanır.

Elinde ko.exe'nin kaynak kodu olsa dahi, yapabileceklerinin DLL ile yapabileceklerinden HİÇBİR farkı yok. DLL kullanman, seni hiçbir açıdan kısıtlamadığı gibi, exe kaynak koduna yazabileceğin *sihirli* satırların yoksa, aradaki fark = 0. Daha doğrusu, DLL demek aslında senin kaynak koduna 'ek' yapman demek bir nevi. Ha kodu exenin içerisine dahil etmişsin, ha dll üzerinden çalıştırmışsın. Yazacağın/yazabileceğin kod belli. Sana sıralayayım.

1-) Hafıza koruma işlemi, oyun içerisindeki değişkenleri korumak için Win32 API'sini kullanarak belirli başlı fonksiyonları hooklayıp, OpenProcess, TerminateProcess, CreateThread vs. fonksiyonları engellersin. Aynı işi hile yazan bir arkadaş da yapabilir. Bu süreçleri karmaşıklaştırabilirsin, fakat illa ki süreci çözecek birisi çıkacaktır. KARMAŞIKLIK, GÜVENLİK DEĞİLDİR.

2-) Oyun içerisindeki döngülere oyunun gidişatı ile alakalı kontroller ekleyebilirsin,bu ekleyeceğin kontroller de hile yapacak arkadaş tarafından yeniden yönlendirilebilir, logic kontrolleri tersine çevrilebilir veya tamamen kaldırılabilir.

3-) Dosya kontrolleri, yine aynı şekilde. En basitinden, TBL ile yapılabilen hilelerin sebebinin TBL dosyalarının düzenlenebilmesi olarak görüldüğü bir piyasadayız. Asıl problem bu dosyaların düzenlenebilmesi değil, düzenlendiği zaman hile yapılabilmesi. Düzgünce hazırlanmış bir altyapıda böyle birşeyin olması imkansız.

4-) Karakter animasyonları, genel animasyon kontrolleri. Dosya kontrollerinde bahsettiğim gibi, dosyayı kontrol etmiş olman, bu dosyanın düzenlenemeyeceği anlamına gelmiyor. Hile yapacak arkadaş, hafızaya yüklenen değeri değiştirebilir direk.

Hile engelleme sistemlerinin aşılma sebebi dll olması veya driver olması vesaire değil. Asıl problem : HİLENİN CLİENT TARAFINDA ENGELLENMEYE ÇALIŞILMASI. Bir hilenin yapılmamasını istiyorsan, hilenin yapılmasını sağlayan şeyi ortadan tamamen kaldırman lazım, bu da ancak SERVER taraflı mümkün olan birşey. Sen hile kontrolü için cliente güvendiğin sürece, senin güvenlik sistemini aşıp bu hileyi yapacak birileri her zaman var olacaktır. Client taraflı hile engellemek, geçilmesini istemediğin bir patikaya tel örgü çekmeye benzer. Veya biraz daha düzgün birşey yazdıysan, beton duvar örmeye benzer. Senin yapman gereken şey, yola engel koymak değil, yolu kaldırmak. Bunu yapmadığın sürece, o yoldan geçen kaçaklar olacaktır.

MMORPG geliştirmenin ilk kuralı :

1-) Never trust the client.

Umarım yeterince detaylı anlatabilmişimdir.


Kırmızı ile belirttiğim yer çok haklı bir söylem.Client tarafında kontroller her zaman aşılabilir.Kırılamayan sistem yok.Server tarafından bazı ufak kontroller eklendiğinde bir çok problemi çözmüş oluyoruz.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Artı olarak, senin yapabilen kişileri bilmiyor oluşun, genel geçer kurduğun şu cümleyi geçerli kılmaz. Herşeyi para olarak görüşünüze hayranım.

Yakın zamanda açılacak v1534 server'ıma beklerim. Ne demek istediğimi anlayacaksın.


Para olarak düşünmediğim piyasada hiç bir zaman bir şey satmadığımdan bellidir ben sadece düşüncemi söyledim server taraflı ne yaparsan yap sonucta bunun birde client tarafı var sen cliente istediğini yolla client buna bir cevap vermezse bunun ne önemi var DLL'in ne olduğunu bende biliyorum benim demek istediklerimi yanlış anlamışsınız ama bu bir sorun değil.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Para olarak düşünmediğim piyasada hiç bir zaman bir şey satmadığımdan bellidir ben sadece düşüncemi söyledim server taraflı ne yaparsan yap sonucta bunun birde client tarafı var sen cliente istediğini yolla client buna bir cevap vermezse bunun ne önemi var DLL'in ne olduğunu bende biliyorum benim demek istediklerimi yanlış anlamışsınız ama bu bir sorun değil.


Arkadaşım bak daha detaylı açıklayayım.

Server bu işlemde otorite konumundadır. Client cevap vermiyorsa, 's*ktir edersin'. Çünkü client'in cevap verme zorunluluğu vardır. Normal işleyiş bu şekilde olduğu için. Eğer bir anormallik varsa, zaten birisi hile yapmaya, aldığın önlemleri aşmaya çalışıyor demektir.

Server taraflı hile önleme, cliente 'birşey' yollamakla olmaz. Hile yapılacak alanları belirleyip, bunların kontrolünü sağlaman lazım. İki tane örnek vereceğim.

Birincisi, bütün serverların muzdarip olduğu 'Speedhack' problemi.
Problem : Client, hız konusunda karar verici durumda. Server kısmında clientin gerçek hızını hesaplamak için bir mantık yok.
Çözüm : Lise 1 Fizik 'Vektörler' konusu.
Yapılması gereken şey : İstemci(client) in gönderdiği koordinat ile bir önceki konumu arasındaki mesafeyi hesaplayarak, iki gelen paket arasındaki süreyi göz önünde bulundurduktan sonra, hesaplanan x mesafesinin t süresinde kat edilip edilemeyeceğini belirlemek.
Sonuç : Sunucu her zaman clientin gerçek hızını belirleyebilir. Bu sayede speedhack diye bir durum söz konusu olamaz.

İkincisi 'wallhack'.

Problem : Obje kesişim noktaları (collision mesh) kontrolü yalnızca client tarafında mevcut. Oyuncunun bir obje ile kesişip kesişmediğine yalnızca client karar veriyor. Server tarafında herhangi bir doğrulama yok.
Çözüm : Matrix, Interpolasyon, Vektör aritmediği
Yapılması gereken şey : Server tarafına da bulunan haritanın collision mesh verisini yükletip, clientin hareket etmek istediği koordinatta bir obje ile kesişmenin söz konusu olup olmadığının belirlenmesi.
Sonuç : Client 'ben şuradayım ve burada obje yok' dese dahi, server 'dur bi de ben bakayım.. hııı seni gidi ipne, taşın içindesin' diyeceğinden, objelerin içerisinden geçme gibi bir durum söz konusu olamaz.

Bu iki verdiğim örnekten anlayacağın üzere, hile server tarafında engellenir. Client tarafında yapacağın şeyler, yalnızca sökülmüş bir kısmı sürekli dikmeye ve her zaman yırtılmasına göz yummaktan başka birşey değildir.

Sağlıcakla.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Arkadaşım bak daha detaylı açıklayayım.

Server bu işlemde otorite konumundadır. Client cevap vermiyorsa, 's*ktir edersin'. Çünkü client'in cevap verme zorunluluğu vardır. Normal işleyiş bu şekilde olduğu için. Eğer bir anormallik varsa, zaten birisi hile yapmaya, aldığın önlemleri aşmaya çalışıyor demektir.

Server taraflı hile önleme, cliente 'birşey' yollamakla olmaz. Hile yapılacak alanları belirleyip, bunların kontrolünü sağlaman lazım. İki tane örnek vereceğim.

Birincisi, bütün serverların muzdarip olduğu 'Speedhack' problemi.
Problem : Client, hız konusunda karar verici durumda. Server kısmında clientin gerçek hızını hesaplamak için bir mantık yok.
Çözüm : Lise 1 Fizik 'Vektörler' konusu.
Yapılması gereken şey : İstemci(client) in gönderdiği koordinat ile bir önceki konumu arasındaki mesafeyi hesaplayarak, iki gelen paket arasındaki süreyi göz önünde bulundurduktan sonra, hesaplanan x mesafesinin t süresinde kat edilip edilemeyeceğini belirlemek.
Sonuç : Sunucu her zaman clientin gerçek hızını belirleyebilir. Bu sayede speedhack diye bir durum söz konusu olamaz.

İkincisi 'wallhack'.

Problem : Obje kesişim noktaları (collision mesh) kontrolü yalnızca client tarafında mevcut. Oyuncunun bir obje ile kesişip kesişmediğine yalnızca client karar veriyor. Server tarafında herhangi bir doğrulama yok.
Çözüm : Matrix, Interpolasyon, Vektör aritmediği
Yapılması gereken şey : Server tarafına da bulunan haritanın collision mesh verisini yükletip, clientin hareket etmek istediği koordinatta bir obje ile kesişmenin söz konusu olup olmadığının belirlenmesi.
Sonuç : Client 'ben şuradayım ve burada obje yok' dese dahi, server 'dur bi de ben bakayım' diyeceğinden, objelerin içerisinden geçme gibi bir durum söz konusu olamaz.

Bu iki verdiğim örnekten anlayacağın üzere, hile server tarafında engellenir. Client tarafında yapacağın şeyler, yalnızca sökülmüş bir kısmı sürekli dikmeye ve her zaman yırtılmasına göz yummaktan başka birşey değildir.

Sağlıcakla.


Client tarafında pek bilgim olmadığı için şunu sormak istiyorum.Collision mesh verisini nereden bulabilirim(Clientin içinde)? Ayrıca verdiğin bilgiler biraz daha mantıklı düşünmemi sağladı:) Çok güzel bilgiler veriyorsun.Teşekkürler reis >.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Client tarafında pek bilgim olmadığı için şunu sormak istiyorum.Collision mesh verisini nereden bulabilirim(Clientin içinde)? Ayrıca verdiğin bilgiler biraz daha mantıklı düşünmemi sağladı:) Çok güzel bilgiler veriyorsun.Teşekkürler reis >.

Client tarafında '.opd' uzantılı dosyaların içerisinde objelerin konumları ve collision meshleri mevcut.

Rica ederim, birşeyler katabildiysem ne mutlu bana.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Client tarafında '.opd' uzantılı dosyaların içerisinde objelerin konumları ve collision meshleri mevcut.

Rica ederim, birşeyler katabildiysem ne mutlu bana.


Peki bu dosyalardaki objelerin nerede olduğunu anlamak için neyi bilmem gerekli? Bana bir 'keyword' söylersen araştırır bakarım üstad.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Peki bu dosyalardaki objelerin nerede olduğunu anlamak için neyi bilmem gerekli? Bana bir 'keyword' söylersen araştırır bakarım üstad.


Pek internette bulabileceğin bir veri değil. Knight OnLine 1081 kaynak kodlarınddaki N3ShapeMgr'i incelemeni tavsiye ederim. Objelerin okunması ile alakalı kodlar ve collision hesaplamaları bu sınıfın içerisinde.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Pek internette bulabileceğin bir veri değil. Knight OnLine 1081 kaynak kodlarınddaki N3ShapeMgr'i incelemeni tavsiye ederim. Objelerin okunması ile alakalı kodlar ve collision hesaplamaları bu sınıfın içerisinde.


Peki çok teşekkür ederim.Proje ödevlerimden fırsat buldukça buna bakacağım.Öğrenincede sana refer ederek bir makale yazmayı düşünüyorum.

İletiyi paylaş


Link to post
Sitelerde Paylaş
Alıntı
Peki çok teşekkür ederim.Proje ödevlerimden fırsat buldukça buna bakacağım.Öğrenincede sana refer ederek bir makale yazmayı düşünüyorum.


Estağfurullah, rica ederim. Takıldığın yerlerde özel mesaj yolu ile ulaşırsan yardımcı olmaya çalışırım. Kolay gelsin.

İletiyi paylaş


Link to post
Sitelerde Paylaş

×
×
  • Yeni Oluştur...