DMA Nedir?

Doğrudan Bellek Erişimi (Direct Memory Access; DMA), merkezi işlem biriminden (Central Processing Unit; CPU) bağımsız olarak, çevresel bileşenlerin Rastgele Erişimli Hafıza (Random Access Memory; RAM) bloğuna erişebilmesini sağlayan bir özelliktir.

DMA, disk sürücü kontrol birimleri, grafik kartları, ağ kartları ve ses kartları dahil olmak üzere birçok donanım bileşeni tarafından kullanılmaktadır. DMA kanalı olan sistemler, DMA kanalı olmayan sistemlere göre daha hızlı bir şekilde veri transferi yapabilmektedir. DMA, bilhassa gerçek zamanlı uygulamalar için oldukça yararlı bir özelliktir.

DMA Hileleri Nasıl Çalışır?

Harici Aygıt:
DMA hilelerinde, özel bir kart gibi harici bir cihaz bilgisayara bağlanır. Bu cihaz bilgisayarın belleğine doğrudan erişebilir.

dma_1.webp

(Fotoğraf: Cat And Mouse — ESEA Anti-Cheat)

Bellek Okuma/Yazma: Cihaz, sistemin belleğinden veri okuyabilir ve belleğe veri yazabilir. Bu, oyunun verilerini gerçek zamanlı olarak değiştirmesine olanak tanır. Örneğin, bir oyuncunun sağlığı, cephanesi, konumu gibi değerleri değiştirebilir ve hatta gizli nesneleri görünür hale getirebilir.

Anti Hile Yazılımını Atlatma: Cihaz donanım düzeyinde ve oyunun bellekteki kendi sürecinin dışında çalıştığından, oyunların kullandığı tipik hile tespit sistemlerini atlayabilir. Bu hile tespit sistemleri genellikle bellek seviyesinde yapılan harici değişiklikleri değil, oyun sürecindeki düzensizlikleri izler.

Oyunlarda Avantajlar: Çok oyunculu oyunlarda, önemli oyun unsurlarını değiştirebildikleri için bu durum hilecilere önemli bir haksız avantaj sağlayabilir. Örneğin, mükemmel nişan alabilir, duvarların arkasını görebilir (wallhack) veya sınırsız bir kaynağa sahip olabilirler.

dma_2-1.webp

(Fotoğraf: Cat And Mouse — ESEA Anti-Cheat)

Tespit: Tespit edilmesi daha zor olmasına rağmen, gelişmiş hile önleme sistemleri DMA tabanlı hileyi gösteren düzensiz pattern hareketlerini tespit edebilir. Ayrıca, bu tür hilelerin kullanılması, bilgisayarın donanımıyla oynamayı içerdiğinden ve potansiyel olarak sistem kararsızlığına neden olabileceğinden bir risk oluşturmaktadır.

Örnek bir kod parçası ile detaylandıracak olursak;

Python:
class GameIntegrityMonitor:
    def __init__(self):
        self.expected_memory_patterns = self.load_expected_patterns()
        self.player_behavior_analytics = PlayerBehaviorAnalytics()

    def load_expected_patterns(self):
        # Normal oyun belleği durumlarını tespit eden patternleri yükle
        return patterns

    def scan_memory(self):
        current_memory_state = read_game_memory()
        if not self.validate_memory_state(current_memory_state):
            self.flag_cheating()

    def validate_memory_state(self, current_state):
        # Mevcut oyun belleği durumunu beklenen patternlerle karşılaştırın
        return current_state in self.expected_memory_patterns

    def analyze_player_behavior(self, player_data):
        # Hile yapıldığını gösteren patternler için oyuncu eylemlerini analiz edin
        if self.player_behavior_analytics.detects_irregularities(player_data):
            self.flag_cheating()

    def flag_cheating(self):
        # Hile tespit edildiğinde yapılması gerekenler
        raise Alert("Hile tespit edildi, user_flag: Red")

# Oyuncu davranış analizi için yardımcı class
class PlayerBehaviorAnalytics:
    def detects_irregularities(self, player_data):
        # Oyuncu davranışlarındaki düzensizlikleri tespit etmek için analizler uygula.
        # Örnek: Doğal olmayan yüksek aim, imkansız hareketler vb.
        return irregularities_detected

Tam Tespit Vektörleri
  • Bellek Kalıplarında Anormallik Tespiti: Normal oyunla tutarsız kalıpları tespit etmek için düzenli bellek taramaları.
  • Oyuncu Davranış Analizi: Anormallikler için oyuncu istatistiklerini ve eylemlerini izleme (imkansız isabet oranları veya hareketler gibi).
  • Donanım İzleme: Bazı durumlarda, DMA cihazlarının göstergesi olabilecek yetkisiz donanımları izlemek mümkündür.
  • Harici İletişim Analizi: Harici cihazlara gönderilen olağan dışı trafiği veya sinyalleri tespit etme.
Zorluklar ve Sınırlamalar
  • Karmaşıklık: Doğru tespit karmaşıktır ve hem oyun yazılımı hem de işletim sistemi ile derin entegrasyon gerektirir.
  • False Positive Durumları: Sofistike izleme, meşru oyuncuları etkileyen false positive durumlara yol açabilir.
  • Donanım Düzeyinde Koruma: Bazı sistemler DMA saldırılarına karşı donanım düzeyinde korumalar kullanır ancak bunlar her zaman kusursuz değildir veya evrensel olarak kullanılmaz.
Özetle, DMA hilelerini tespit etmek doğrudan donanım seviyesindeki etkileşimleri nedeniyle zor olsa da, bellek modellerinde anormallik tespiti, oyuncu davranış analizi ve donanım izleme gibi yaklaşımlar kullanılabilir. Bu yöntemlerin uygulanması önemli bir teknik uzmanlık ve hem oyunun iç işleyişinin hem de sistemin donanım mimarisinin anlaşılmasını gerektirir.
 
Son düzenleme:
Ellerinize sağlık, keyifli ve öğretici bir rehber. Okuduğuma memnun oldum.

Oyunlarda Avantajlar: Çok oyunculu oyunlarda, önemli oyun unsurlarını değiştirebildikleri için bu durum hilecilere önemli bir haksız avantaj sağlayabilir. Örneğin, mükemmel nişan alabilir, duvarların arkasını görebilir (wallhack) veya sınırsız bir kaynağa sahip olabilirler.

Wallhack'in nasıl sağlandığı konusunda kafam karıştı da acaba atıyorum RAM manipülasyonuyla duvar ortadan mı kaldırılıyor? Eğer öyleyse oyuncu da öyle duvarsız mı görmüş oluyor?
 
Wallhack'in nasıl sağlandığı konusunda kafam karıştı da acaba atıyorum RAM manipülasyonuyla duvar ortadan mı kaldırılıyor? Eğer öyleyse oyuncu da öyle duvarsız mı görmüş oluyor?

Wallhack'in temel mantığı, oyuncunun yerini görmek. Bu oyun içi bir özellik de olabilir. Oyuncunun iskeletini çizdirmek, oyuncunun konumunu kutu içerisine almak da olabilir.

Oyun içi özellik: Rainbow Six Siege'den örnek verelim; Caveria isimli operatörün, Silent Step özelliği sayesinde DBNO olmuş bir rakibi sorgular ve yerlerini açığa çıkarır. Bu özelliği sürekli aktif halde tutmak Wallhack sayılabilir.

Oyuncu iskeleti ne? O da nereden çıktı şimdi?

DirectX ile arayüz oluşturma: DirectX, Microsoft platformlarında başta oyun programlama ve video olmak üzere multimedya görevlerini yerine getirmek için kullanılan bir API (Uygulama Programlama Arayüzleri) koleksiyonudur. Wallhack'ler genellikle grafiklerin ekranda nasıl işlendiğini değiştirmek için bu API'lerle arayüz oluşturmayı içerir. Buradaki manipülasyon, oyuncunun bellekteki konumunu alır ve kullanıcının ekranına iskelet veya kutu şeklinde çizdirilebilir.

1704857868567.webp
 
Detaylı açıklama için sağ olun.

Buradaki manipülasyon, oyuncunun bellekteki konumunu alır ve kullanıcının ekranına iskelet veya kutu şeklinde çizdirilebilir.

Bu, rakip oyuncular için de geçerli mi? Öyleyse oyun, RAM'de rakibin konum bilgisini tutuyor ama bunu oyuncudan gizliyor mu?
 
Detaylı açıklama için sağ olun.



Bu, rakip oyuncular için de geçerli mi? Öyleyse oyun, RAM'de rakibin konum bilgisini tutuyor ama bunu oyuncudan gizliyor mu?
Evet, her oyuncunun konum bilgisi, sağlık durumu, eğer mermi kullanıyorsa mermi sayısı gibi bilgiler RAM'de tutulur ve belirli zaman aralıklarında sunucuya gönderilir.
 
Wallhack'in nasıl sağlandığı konusunda kafam karıştı da acaba atıyorum RAM manipülasyonuyla duvar ortadan mı kaldırılıyor? Eğer öyleyse oyuncu da öyle duvarsız mı görmüş oluyor?
Oyuncunun vektörel konum bilgileri duvar olsa da olmasa da bellek üzerinde bilinir halde. Bunu zorlaştıran bazı yöntemler mevcut olsa da tamamen gizletemiyorsun duvar arkasındaki konumunu. Çizim ise çok daha basit örnek vereyim oyun OpenGL tabanlı olsun, sen orijinal OpenGL işlevlerine (glSwapBuffers gibi) sızıp oyuncunun konumsal verilerinde çizim oluşturabiliyorsun böylelikle oyun üzerinde hem senin kodun hem de orijinal kod çalışmış oluyor.
 
Vanguard bir gecede onlarca DMA kullanıcısını tek bir "CPUID" querysi ile tespit edip banladığı için eğer çok sağlam (ve pahalı) bir firmware'i yoksa tespit edilecek bir yöntem.
Ayrıca Valorant gibi "culling" metodu ile düşman pozisyonlarını sadece fiziksel olarak yakınlık varsa client'a cast eden bir sistemdeki avantajı da tartışılır, sadece köşelerde avantaj sağlıyor.

1706136492616.webp
 
Bu, rakip oyuncular için de geçerli mi? Öyleyse oyun, RAM'de rakibin konum bilgisini tutuyor ama bunu oyuncudan gizliyor mu?
Program, görüş mesafesini çizmesi ve diğer detayları yüklemesinden itibaren sunucudan özel olarak gelmeyecek tüm detayları bellekte tutar. Yani evet, rakip oyuncuların tüm konum, silah, can vb. bilgileri bellekte yer alır.
Oyun içi özellik: Rainbow Six Siege'den örnek verelim; Caveria isimli operatörün, Silent Step özelliği sayesinde DBNO olmuş bir rakibi sorgular ve yerlerini açığa çıkarır. Bu özelliği sürekli aktif halde tutmak Wallhack sayılabilir.
Nasıl açık tutuyorlar, onu da ekleyeyim: Tüm bu bilgiler RAM'de değişken olarak yer almaktadır. Duvar görüşünü açan özelliğin kapalıyken değeri 0'sa, bunu 1 yaparak duvarların arkasının görünmesini sağlayabilirler. Buna da hile deniyor zaten.

Bu yüzden, teorik olarak, oyunda duvar açma özelliği varsa onu istenmeyen zamanlarda kullanmak daha kolay olabilir. Oyunda böyle bir özellik yoksa ayrı script yazması gerekir ki anti-hile yazılımları bunu daha kolay tespit edip banlayabilirler.