Çevrimiçi çok oyunculu oyunlarda hile yapmayı önlemenin veya azaltmanın bazı yolları nelerdir? [kapalı]


19

Punkbuster sadece hile yapmayı önlemek için var, ancak hile punkbuster etkin oyunlarda yaygındır. Modern Warefare 2, kendi sunucusunu çalıştıran veya herhangi bir mod yapan son kullanıcıdan ciddi şekilde kilitlenmiştir ve hile sürekli olarak gerçekleşir.

Her istemcinin bir bilgisayarda çalıştığı çok oyunculu bir oyun için, hile azaltmak veya ortadan kaldırmak için ne yapılabilir?



1
Bu kendi başına tam bir cevap değil, bu yüzden bir olarak listelemeyeceğim, ancak oyuncu hesabına geleneksel hile karşıtı yöntemlere ek olarak belirli bir değer eklerseniz bunun yardımcı olabileceğine inanıyorum. Örneğin, yeni oyuncular oyunun geri kalanına erişmek için yeterli deneyim kazanana kadar "noob" sunucularına düşerse, bilgisayar korsanlarının her seferinde yasaklandıktan sonra hesaplarını yeniden seviyelendirmeleri büyük bir acı haline gelir. Muhtemelen bunu aşabilecek bazı bilgisayar korsanları var, ancak hesap / eşleştirme sunucularınızı güvence altına almak, istemcileri güven altına almaktan çok daha kolay.
Lewis Wakeford

Yanıtlar:


18

Bu, hile yapmanın, hile oluşturmanın birincil yollarından birine, uygulamanıza kilitlenmesine ve onu değiştirmesine bağlı olarak nasıl değiştiğine bağlıdır - diğer tüm işlemleri numaralandırabilir ve bellek işleme yöntemlerini ve klavye / fare öykünmelerini bağlayabilirsiniz. yöntemleri.

Wallhacks tipik olarak malzemeler üzerinde şeffaflığı ayarlamak için işleminiz ve DirectX / GL kütüphaneleri arasında kod enjekte edilerek yazılır. Diğer oyuncuları / yararlı objeleri duvarların arkasındaysa (bu şekilde hile yapılmasını önlemek için) özellikle çizmemek için sahne grafiğinize / kaldırma sisteminize bir kod ekleyebilirsiniz.

Çok oyunculu olacaksanız ve paketlerin istemci / sunucu arasında değiştirilmesini önlemek istiyorsanız, kendi algoritmanız aracılığıyla gönderdiğiniz verilerin bir sağlama toplamı oluşturmak ve diğer tarafta olduğu gibi bunu kontrol etmek etkili olabilir. (Muhtemelen bunu çeşitli KG amaçları için yine de yapacaksınız).

Aynı durum, bellek içi kaynaklarınızın çoğu için de geçerlidir, bir karenin başlangıcında bir sağlama toplamı oluşturur ve bunu çeşitli aşamalarda doğrulamak, bazı oldukça kullanışlı bellek işleme algılamasına neden olabilir.

Bu oldukça ilgili bir konudur, ancak umarım bu sizi kesin olarak kabul edilebilir bir yöne yönlendirir.


Veya duvarların arkasındaki nesneleri gizlemekten daha iyi (hala hacklenebilen), müşteriye oyuncunun yeri hakkında bilgi vermemek (veya sadece iyi bir 3d ses efekti için gerekli olan)
Bart van Heukelom

17

En uç çözümde, müşteriye asla güvenmezsiniz. MMO'lar gibi oyunlar için kullanıcılar sunucularını çalıştırmaz ve herhangi bir oyun mantığı sunucu tarafı tarafından ele alınır. Müşteriye asla "X sağlığım var" veya "X cephanem var" vb.


4
Eğer gerçekten özel bir sunucu çalıştırmak için kaynaklara sahipseniz bu harika, ama ona bakmanın oldukça basit bir yolu. Büyük olasılıkla, istemcilerde çok fazla mantık ve sunucudaki mantığın minimal bir alt kümesini yaparsınız ve temel kuralları uygulamak için zaman zaman senkronizasyon gerçekleştirirsiniz. Aynı zamanda mutlaka vb yararlı bilgiler / açığa çıkarmak müşteri aptal tüm karşı wallhacks / bellek manipülasyon gibi istemci tarafı hileleri engellemez
Rob Ashton

10

Mantığın pahalı olduğu ve sunucu döngülerini kaydetmek için çoğunlukla istemcide yapılması gereken bir sisteminiz varsa, olasılıklı bir hile algılama sistemi uygulayabilirsiniz. Her birkaç dakikada bir, sunucuyu yakından incelemek ve tutarlılık kontrolünü yapmak için farklı birkaç oyuncuyu seçer. Hile yapan kişiler hile yapmalarını nadiren kısa ve nadir dönemlerle sınırladığı için olacak en sonunda yakalanacak.

Bunun bir başka yararı da, geliştirme için hızlı bir geri dönüş döngüsüne sahip olmamalarıdır - sunucunun size dikkat etmesi ortalama 10 saat sürerse, her görmek istediğinizde bu 10 saatlik bir geri dönüş döngüsüdür. eğer bir şey işe yaradıysa. Ve eğer işe yaradıysa , daha da uzun çünkü sunucunun onlara bir başparmak vermiş olup olmadığını ya da sadece onlara ulaşıp ulaşmadığını bilmeyecekler.


+1 Performans açısından, bu gibi stokastik yaklaşımlar daha geniş sorunlara tek gerçekçi cevaptır, IMO. OnLive'ın yanı sıra, yalnızca ABD'yi hedefliyorsanız.
Mühendis

5

Birinci şahıs atıcılar için grafik kitaplık çağrılarına bağlanan birçok türde yardımcı yardımcı kesmek de vardır. Counter-Strike / HL1 için OGC Hook, duvarları şeffaf hale getirmenin ötesinde çok sayıda seçeneğe sahipti.

Düşmanların konum bilgileri, bir noktada yaygın olarak kullanılabilir koda sahip daha düşük seviyeli bir kütüphaneye aktarılırsa, bu çağrılar bağlanabilir ve konum, ölçek, rotasyon, vb. Veriler, ateşleme için en iyi vektörü kesin olarak hesaplamak için kullanılabilir. o düşmanın üzerine. PunkBuster gibi anti-hile sistemleri genellikle sezgisel tip algılamayı içerir (bu oyuncu ne sıklıkta mükemmel bir atış yapar, tek atışlık bir öldürme yapmak için yaklaşık 180 derece dönerler, vb.).

Sonuçta çok oyunculu oyunlarda hile yapmayı önleme görevi kedi ve fare oyunudur. Yeni hileler geliştirildikçe, yeni hile önleme yöntemleri oluşturulur ve daha sonra yeni hile önleme teknolojilerinden kaçınmak için yeni hileler oluşturulur.

Tetrad'ın yanıtında söylediği gibi, "oyun güvenliği" için tek zor ve hızlı kurallar, müşteriye olabildiğince az bilgi sağlamak ve müşteriye olabildiğince az güvenmektir. Farklı oyun türlerinin, bu kurallara ne kadar iyi uyduğunuzu etkileyebilecek farklı gereksinimleri olacaktır.

Bir FPS oyununda, oyun hızı çok hızlı olduğundan, istemciye sadece bu tam an hakkında bilmesi gereken verileri sağlamak çoğu zaman mümkün değildir. Eğer müşteriye köşede bir düşman olduğunu söylemezseniz ve oyuncu o köşeyi dolaşırsa, aniden onlara bu bilgileri milisaniye içinde göndermeniz veya oyuncunun yapmadıkları bir düşman tarafından öldürülme riskiyle karşı karşıya kalmanız gerekir. hiç görmedim.

Şu anda mevcut olan bu sorunlar için tek "düzeltme" muhtemelen OnLive olacaktır. Bu hizmet yalnızca veri merkezinde güvenli bir şekilde çalışan bir istemciden ses ve video içeriği sağladığından, hile yapmanın tek yolu, esasen gelen video akışını analiz edebilen ve buna dayalı olarak eylemde bulunabilecek bir insan AI oluşturmak olacaktır. eğer varsa, hileler kadar.


3

Yukarıdaki tüm cevaplar harika, ama başka bir parça ekleyeceğim:

Bazı oyunların, oyun bittikten sonra her oyunun tekrarını kompakt bir biçimde kaydetmesini ve çeşitli şekillerde izlemesini sağlayan çok sağlam bir tekrar oynatma özelliği vardır - farklı oyuncu perspektifleri, gerçek zamanlı istatistik kullanıcı arayüzü vb.

Çok tanıdığım bir örnek: Starcraft 2. Blizzard'ın bilgisayar korsanlarını engellemesinin yollarından biri, oyun tekrarları olarak hile kanıtları almaktır.

Bir FPS'de kullanım için bir örnek: bir oyun oynadıysanız ve diğer kişinin bir duvar korsanlığı ile aldattığından şüpheleniyorsanız, tekrarı izlersiniz ve sonra normal tekrar görme vizyonunda, muhtemelen seni gördü ve köşeye bir el bombası attı.

Daha sonra onu tekrarla rapor edersiniz ve ona karşı kanıtlar yeterince iyi ise, yasaklanmıştır. Bildiğim kadarıyla, bu şeyleri yapan şirketler, yasaklanmadan önce sadece ciddi kanıtlar veya aynı davranışa ilişkin birden fazla kanıt kaynağı alırlar.

Dolayısıyla bu bir hata ayıklama önleme tekniği değildir, hile konusunda uygun insan destekli kanıt sağlayan bir kullanıcı rapor sistemidir.


0

Bu tam bir cevap olmayabilir, ama burada bazı girdilerim var. Hile yapmayı önlemenin en iyi yollarından biri şaşkınlık veya C / C ++ kullanmaktır. Bu, kullanıcıların istemci kodunu değiştirmesini önler.


Orada birçok deobfuscator olduğunu belirtmek gerekir. Ayrıca .Net (C #, XNA) oyunları bir Yansıma kullanılarak değiştirilebilir. Bildiğim kadarıyla, sanırım C / C ++ gerçekten zor kod kurcalamak için bir yoludur.
user1306322

Evet. Demek istediğim, sadece gizleme kolayca kod çözülemeyen kodun okunamaz olmasını engelliyor ve C / C ++ 'ın derlenmesi kolay değil, ikisi de iyi seçenek.
LiquidFeline

Ayrıca, oyununuzu sık sık yama yaparsanız ve çalıştırılabilir dosyadaki ikili ofsetleri değiştirirseniz veya rastgele NOP'lar eklerseniz, hiçbir saldırı yeterince uzun süre hayatta
kalmaz

@CPP_Person: Aslında C, derlemesi çok kolay olduğu için oldukça ünlüdür. Bu derleyiciler açısından oldukça karmaşık bir dil olan C ++ için tamamen farklı bir konudur. Ancak, neden önemli olmalı, belirli bir programlama dilini derlemenin ne kadar kolay olduğunu bilmiyorum - insanların iyi bir derleyici yazmasını değil, hile araçları yazmasını önlemek istiyorsunuz - zaten mevcut bir C ++ derleyicisini kullanacaklar - yine de derleme zor benim için derleme zor yapmaktan çok daha ilginç görünüyor.
Kaiserludi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.