Yardım Hile Fixi İçin Skill Animasyon Pointerlarını Değişken yapmak?

  • Konuyu açan Konuyu açan Tengrist
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 3
  • Gösterim Gösterim 114
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

Tengrist

Yardımsever Üye
Yardımsever Üye
MT Üye
Mesaj
1.319
Çözümler
41
Beğeni
1.097
Puan
1.309
Ticaret Puanı
0
Arkadaşlar son dönemlerde hilecilerin kodlarını inceliyorum bu pointerları kullanarak serbest açmadan rakibe saldırabiliyorlar( svside gibi korumalarda ya da game srcdeki değişikliklerle dmg atamıyorlar fakst rakibi oradan oraya sürükleyebiliyorlar) animasyon pointerlarını sabitten değişken hale getirebilir miyiz?
 
Pointerların okunulabilir değişikliği için derleyip, her derleyici çıktısında bir etiket verip kontrol koyarak belirli süreler arasında değiştirilebilirliğini sağlayabilirsin. Günümüzün genel sorunu x86 mimarisine sahip oyunların modüllerini güncellememesi. Hile yapanlara dikkat edersen modülleri bildikleri için kolay bir şekilde aşıyorlar bunu cythonla beraber ekstra modül kontrolü ekleyerek da engelleyebilirsin. Ek olarak ExGuard gibi client için koruma sunan veya Uriel x86 gibi her iki side'a hile koruması sunan korumalar tercih edebilirsin.
 
Bunun için izlenebilecek birkaç yol var. Pointer'ı şifrelemek, heap shuffle vb.
Bu ikisini belirli zaman aralıklarıyla güncellenecek şekilde kullanmak mümkün. Ama dikkatli olmak gerekiyor, aksi halde bellek sızıntısı riski mutlak olan yöntemlerdir.

Mesela şöyle bir sabit pointer olsun:
C++:
Genişlet Daralt Kopyala
CInstanceBase * motionPointer;

Daha sonra uygun bir şekilde şunu uygularsak;
C++:
Genişlet Daralt Kopyala
    static DWORD last = GetTickCount();
    DWORD now = GetTickCount();

    if (now - last >= 5000) // 5 saniyede bir
    {
        CInstanceBase* old = motionPointer;
        motionPointer = new CInstanceBase(*old);
        delete old;
        last = now;
    }

Böylelikle motionPointer'ın adı aynı kalsa da bellekteki pozisyonu 5 saniyede bir değişmiş olur. CE'nin çalışma prensibini tam olarak hatırlamıyorum, 10 yıl önce kullanmıştım en son.. Dolayısıyla bu senaryoda nasıl bir sonuç çıkacağından emin değilim.

Öte yandan pointerın ismini değiştirmek için std::vector veya std::unordered_map'e başvurulabilir. Bunların içerisinde birden fazla farklı ve isteğe bağlı isimler kullanarak hepsini aynı noktayı işaret edecek şekilde kullanmak da mümkün. Aynı şekilde zaman aralıklarıyla isim güncellemesi yapılabilir ve rand() ile de harmanlanabilir. Fakat dediğim gibi çok fazla dikkat gerektiren bir senaryo, falanca yerde yapılan bir yanlış veya yapılmayan bir eksik işlem kötü sonuçlara neden olabilir.
 
bahsettiğin sürükleme(knock/push) mekaniğini sağlayan şey sync paketi, bunu engellemek için CInputMain::SyncPosition içerisinde gelen paketleri işlemeden önce doğru şekilde kullanıldığından emin olman gerekiyor. bunun içinde gönderenin saldırı durumu, en son ne zaman hedefe saldırdığı, paketler arası geçen zaman, sync mesafesi, safezone kontrolleri, saldırabilirlik durumu(pvp/aggr) kontrolleri, saldırıdaki gönderdiği kombo indexi vs gibi kontrol edilmesi gereken çok fazla durum var, bunları yapmadan yapacağın her türlü geçici çözüm fayda sağlamaz
 
Geri
Üst