Skip to content
Toate articolele
This article is available in English
Publicat pe3 min de citit

Anticheat server-side vs client-side: unde trebuie luată decizia

Anticheat server-side vs client-side: verificările din client împart memoria cu cheat-ul. Ce vede doar clientul și cum îl folosim oricum.

server-sideclient-sidearhitecturăRedM

Disponibil și înEnglishFrançaisРусскийEspañol

Orice discuție despre anticheat ajunge în același loc: cine are dreptul să decidă că s-a întâmplat ceva? Dacă răspunsul este mașina jucătorului, nu ai un anticheat, ai o sugestie. Nu este o critică la adresa unui anumit produs. Este o proprietate a locului unde rulează codul, iar diferența dintre un anticheat server-side și unul client-side pornește de aici.

Două mașini, iar una aparține trișorului

O resursă RedM are o parte de client și o parte de server. Partea de client rulează în interiorul procesului jocului, pe hardware-ul jucătorului, alături de orice altceva a ales acel jucător să încarce. Un mod menu nu atacă resursa ta din exterior: odată injectat, împarte același spațiu de adrese cu jocul și cu starea ta Lua. Este în cameră. Tot ce poate citi scriptul tău de client, meniul poate citi primul; tot ce poate trimite scriptul tău de client, meniul poate rescrie pe drumul de ieșire.

Asta îi dă unui atacator patru mutări împotriva unei verificări client-side, în ordinea crescătoare a lenei:

  • Să o citească. Logica ta de detecție este Lua livrat jucătorului. Pragurile, numele evenimentelor și excepțiile ei sunt lizibile, ceea ce înseamnă că un cheat poate fi reglat să stea chiar sub fiecare număr ales de tine.

  • Să o modifice. Înlocuiește funcția care raportează, sau native-ul pe care îl apelează, cu una care returnează orice te ține liniștit. Verificarea tot rulează. Rulează în favoarea trișorului.

  • Să o împiedice să pornească. Cea mai frecventă în teren și cea mai puțin sofisticată. Nu trebuie învins nimic dacă fișierul nu se execută niciodată: unele loader-e scriu în tabela globală a resursei înainte ca codul tău să apuce să se inițializeze.

  • Să răspundă în locul ei. Dacă serverul întreabă clientul „mai supraveghezi?”, cheat-ul răspunde da. Un mincinos este perfect capabil să confirme că este cinstit.

Canalele de integritate merită păstrate, dar nu dovedesc nimic. Al nostru cere resursei să răspundă serverului după un program, iar serverul tratează tăceri consecutive ca pe un eveniment de escaladat, nu ca pe o acțiune imediată, tocmai pentru că o conexiune rurală produce aceeași semnătură ca o manipulare. Tăcerea îți spune să te duci să te uiți. Nu îți spune niciodată ce s-a întâmplat.

Nepublicat/Pragurile de detecție nu sunt publicate niciodată: o valoare cunoscută este o valoare sub care se reglează un cheat.

Ce vede clientul și serverul nu va vedea niciodată

  • Cinematica țintirii. Serverul primește poziții și focuri. Nu primește camera. Traseul unghiular pe care îl parcurge un crosshair între două ținte (saltul instantaneu, oprirea bruscă, focul tras imediat după) există doar pe client și este cea mai fiabilă urmă pe care o lasă un aimbot extern. Vezi detecția de silent aim pe RedM pentru cum arată asta în practică.

  • Apelurile de native-uri. Spawn-ul unui ped, al unui vagon sau al unui obiect trece prin funcții ale jocului. Din interiorul procesului poți vedea că un apel nu vine din nicio resursă cunoscută. De pe server vezi doar rezultatul, în mijlocul a tot ce creează legitim propriile tale scripturi.

  • Artefactele locale. Variabilele globale pe care le plantează un loader, fișierele pe care le depune lângă joc, starea proprie a unui meniu. Acestea nu traversează niciodată rețeaua. Dacă nimeni nu se uită din interior, nu se uită nimeni deloc.

Clientul este un senzor. Nu este niciodată judecător.

Două feluri de afirmații, tratate diferit
pretins de client
raportat, cu marcaj de timp, niciodată suficient
stabilit de server
diferențe de poziție, număr de lovituri, viața măsurată pe server
confirmat de alt client
victima descrie același eveniment
acțiune luată
doar de server, pe fapte stabilite sau confirmate

Regula la care ne ținem este scurtă: un raport de client poate deschide un caz și nu îl poate închide niciodată. Un client care spune „acest jucător este invizibil” este un motiv să începi să numeri lucruri care aparțin serverului. Cea mai puternică dovadă nu este deloc senzorul: sunt doi clienți independenți care descriu același eveniment, pentru că un trișor ar trebui să corupă ambele mașini ca să rămână coerent, iar una dintre ele este a victimei, care nu are niciun motiv să-l ajute.

A face treaba pe server are un cost real, iar RedM te obligă să-l plătești. Un cal în galop complet ajunge exact unde se află un prag naiv de viteză. Un jucător aflat într-o diligență în mișcare sau într-un tren călătorește fără să se miște. Fast travel-ul mută oamenii prin design, iar revive-ul framework-ului tău setează exact același flag de invincibilitate ca un script de god mode. O verificare server-side care ignoră aceste patru fapte nu produce mai puține fals pozitive decât una client-side. Produce mai multe, mai zgomotoase și cu autoritatea de a da kick.

Așadar, verificarea de viteză nu este un prag, ci o comparație: distanța parcursă față de ce spune motorul că face jucătorul, tolerată pe o fereastră de și abandonată complet când o mutare a fost scriptată. Fereastra exactă și contextele exceptate rămân la noi, pentru că un număr publicat este un număr sub care un cheat poate fi reglat.

Nepublicat/Pragurile de detecție nu sunt publicate niciodată: o valoare cunoscută este o valoare sub care se reglează un cheat.

Fără agent, fără scanare de disc

Unele anticheat-uri de pe alte platforme cer jucătorilor să instaleze un driver, să enumere procesele care rulează sau să calculeze hash-uri ale fișierelor din afara folderului jocului. Noi nu facem nimic din toate acestea și merită spus clar: BaobabAC nu instalează nimic pe mașina jucătorului. Este o resursă pe care o livrează serverul tău, ca orice altă resursă. Nu citește discul, nu listează procesele, nu atinge memoria din afara jocului. Pe un server de roleplay unde o mare parte din populație este deja suspicioasă față de ce poate vedea staff-ul tău, acesta nu este un detaliu tehnic: este diferența dintre o comunitate care acceptă unealta și una care face campanie împotriva ei.

Dacă compari produse, întrebarea de pus unui furnizor nu este câte detecții are. Este: unde se ia această decizie și ce știe serverul singur? Poți vedea cum arată a noastră pe date reale în panoul demo, prețurile sunt publice, iar anticheat-ul nostru RedM răspunde la această întrebare chiar în primul paragraf. Cum funcționează un anticheat RedM tratează familiile de detecție pe care le presupune acest articol.

Continuă lectura

Judecați pe dovezi, nu pe promisiuni

Panoul demo este deschis în regim de citire pe date reale, fără cont.

Everything on one page: Baobab anticheat, detections, evidence and panel.