Cheats - Les reconnaîtres et les combattre

Elikill

Développeur Java trop occupé
23 Février 2014
1 387
204
187
23
eliapp.fr
Bonjour,

Avant toute chose, petite explication sur comment fonctionne un serveur minecraft, parce que c'est important.
Tout d'abord, il y a 2 types de serveurs: Les proxys (BungeeCord, Waterfall...) et les autres (Forge, Spigot, CraftBukkit, Sponge...).
Les différences ?
Un proxy est une réunion de connexion "enfant". C'est à dire que toutes les connexions aux "enfants" dépendent du "parent", le proxy. Sans le parent il est impossible de se connecter aux enfants. Et vous pouvez communiquer une fois avec l'un des enfants, puis avec l'autre juste après. Le plus connu des proxy est BungeeCord, mais il y a une autre version plus optimisé, et ayant moins de bug (mais pouvant utiliser les mêmes les plugins que bungeeCord) qui s'appelle Waterfall.
Les autres, sont les enfants. Ils peuvent fonctionner sans le parent, tout dépend de ce que vous voulez faire. Chacun a ses spécificités:
  • Spigot est une "évolution" de CraftBukkit, un peu comme Waterfall et BungeeCord. Le plus utilisé et ayant le plus de plugin disponible.
  • Forge permet d'utiliser des mods, ce que ne permet pas Spigot. Pour plus d'information, contacter robin.
  • Sponge est le petit nouveau qui veut rendre les serveurs plus optimisé. Il a peut de plugin disponible, parce que il est en changement constant, donc compliquer d'utiliser quelque chose qui n'existe plus...
  • Peut-être d'autres, mais ils ne sont pas connus.
Malgré le fait que chacun ait son fonctionnement, vous, joueur, ne voyez pas la différence.

Petit point sur les languages de programmation : les joueurs ont un jeu en java, mais le serveur peut-être en n'importe quel autre langue. Il faut juste adapter les plugins/mods.

Je suis sûr que j'ai oublié des trucs sur cette partie la.

Maintenant une partie compliqué, le fonctionnement concret, de la connexion à un serveur jusqu'a la déconnexion. Dans cette partie, je ne parle pas de joueur, car un joueur est un être humain qui joue. Je parle de client, car c'est votre jeu en lui même. On dit bien "un client cheat/hack", car ce n'est pas le joueur qui hack, mais le jeu.


Les relations client-serveur se fait via des informations appelé "Packets". Vous êtes obligé d'en envoyer sinon vous verrez ce magnifique message qu'est "Connexion au serveur perdu" ou autre message du même genre.
A chaque version il y a de nouveau packet, parce qu'il y'a de nouvelles fonctionnalités.
Certains plugins ne sont pas compatible pour toutes les versions, a cause des packets principalement.
Pourquoi ? Les développeurs seraient des conn*rds à changer des trucs à CHAQUE versions ?
Non, c'est que, comme dis plus haut, il y a des choses qui change à chaque version, plus de fonctionnalités, changement de nom de certains trucs ...

Lorsque vous vous connectez, vous envoyez des packets utilisé pour faire spawn des faux joueurs:

En écriture...

Ce message sera mis à jour en fonction des avancées des cheats concernés, et aussi de mes tests.

Tout d'abord: Je n'incite pas à tricher, car tricher c'est mal. Je décline tout responsabilités si vous vous faites bannir après les avoir essayé.

Pour les AntiCheats, voir à la fin.

Je fait ça pour tout les joueurs en ayant marre des tricheurs, pour les aider à les reconnaître. Je précise, j'expliquerai également d'un point de vue code (pour les développeurs) dans des spoilers..

Tour d'abord, il y a plusieurs types de cheats:
  • Les ghost clients (indétectable, nul part dans les logs, moins puissant plus discret et souvent payant)
  • Les hacked clients (Sans limites, puissants donc détectables)
  • Les réels (Généralement par abus musculaire ou grâce à des souris/claviers surpuissants, pouvant abîmer les muscles comme le jitterclick. Gratuit, indétectable mais mauvais pour la santé pour un résultat incertain)

Maintenant, liste non exhaustive des cheats :

- AirJump : Permet de sauter sur l'air.
Certain vont dire que le joueur est au sol juste le temps de sauter. D'autres vont juste mettre un mouvement positif en Y

- AntiKnockback (Velocity) : Permet de ne pas broncher même si l'on vous frappe avec un objet enchanté recul 5. Très redouté en Pitchout (cc Epicube) mais très facile à détecter. Attention, certaines personnes ne bougent pas à cause du lag. Comme c'est le client qui contrôle ou il est, le serveur attend de savoir où il sera ...
Pas eu le temps de tester

- AntiPotion : Il permet de supprimer les effets de potions négatifs tel que le poison.
Le joueur envoie habituellement 1 PacketPlayInFlying par tick lorsqu'il ne bouge pas, mais la il en enverra autant que le nombe de tick de la potion (1 seconde = 20 ticks, donc 20 PacketPlayInFlying), pouvant aller à plus de 20000 ...

- AutoClick : Gère les clics du joueur.
(Ceci sont des estimations) Un joueur normal fait jusqu'à 12 CPS. Un pro/tryharder peut faire jusqu'à 20 CPS. Avec du jitterclick (Plus d'informations) on peut atteindre 24 CPS.
Clic à la place du joueur, et donc parfois plusieurs fois en 1MS

- AutoRegen : Permet de régénérer sa vie automatiquement, le plus rapidement possible. Le plus drôle, c'est qu'il n'y arrive pas si vous n'avez pas toute votre nourriture, mais continue d'essayer à l'infini.
Il a un fonctionnement similaire à l'AntiPotion. Il va envoyer des PacketPlayInFlying pour faire passer les ticks, et donc reprendre de la vie. Je précise, si la personne n'a pas toute sa nourriture il enverra en continue un grand nombre de flying packet (~400/secondes) mais le joueur ne gagnera pas de vie, puisque le serveur n'acceptera pas (c'est un principe de minecraft ça).

- AutoSteal : Organise l'inventaire du joueur. Il va cliquer à sa place.
Le client va faire toutes les actions en un temps record

- Blink : Simule un lag, pour faire comme si le joueur se téléportait.
C'est a ce moment la qu'on se rend compte que minecraft est mal fait. Alors que certain cheats consistent à l'envoie d'un grand nombre de packet, la c'est l'inverse. Le client n'enverra que du PacketPlayInKeepAlive pour ne pas se faire déconnecter. Il est mal fait car le joueur peur se déplacer comme il le souhaite sans que le serveur ne bouge. Et le serveur enverra bien les informations des autres joueurs au client.

- Critical : Fait des coups critiques à chaque attaque.
Pas besoin de sauter, même en sneak. Attend, les règles du critique change entre PvP 1.8 et 1.9+

- FastBow : Permet d'envoyer un grand nombre de flèches en peu de temps. Visible par le grand flux/lag produit par le joueur qui se met à détruire son arc et à se vider de ses flèches.
Le client envoie 20 PacketPlayInFlying par flèche (il fait passer les ticks comme si le temps de chargement de l'arc passait. Sensiblement comme l'AutoRegen et l'AntiPotion)

- FastEat/AutoEat : Permet de consommer un item en un instant (Et change le slot sélectionner pour le manger et revenir sur le slot précédent). Généralement utilisé dans les combats rapide.
Le client envoie beaucoup de PacketPlayInArmAnimation (je crois) et PacketPlayInFlying car il effectue plein de fois l'action de base, très rapidement. Il envoie donc le même nombre de packets qu'un joueur normal, mais en un temps nettement réduit.

- FastBreak/FastPlace : Permettent de réduire le temps lorsqu'on détruit/place un block.
Généralement le joueur clique beaucoup plus vite sue la normal. Il est impossible de cliquer plus de 5 fois dans la même seconde (d'après le wiki, je retrouverai le lien), et la ils peuvent cliquer beaucoup plus vite. (Jusqu'à 0 millisecondes entre 2 cliques pour les gens les plus chaud)

- FastLadder : Permet de monter les échelles plus rapidement.

- FastStairs : Un speedhack pour les escaliers.
Attention à lorsque la personne saute

- Fly : Permet de voler. Il y a aussi parfois FlyNCP pour pouvoir voler sur les serveurs ayant le plugin NoCheatPlus.
Je pense qu'il y'a d'autres choses, mais bon.
Le joueur envoie très peu de packet par rapport à d'habitude (plus de position/position_look pas beaucoup de keep alive et peu de flying)

- ForceField : Permet de simplifier l'attaque. Généralement le joueur ne regarde pas l'autre personne mais la tape quand même. Il est beaucoup plus puissant que le KillAura car il peut attaquer beaucoup d'entités en même temps (Ex: s'il y'a 100 cochons, il tapera les 100 en même temps).
Le client enverra beaucoup de packets "d'attaques" tel que: PacketPlayInArmAnimation et PacketPlayInUseEntity. Alors qu'un client normal envoie maximum respectivement 8 et 21 packets, la le client peut atteindre des chiffres phénoménaux, en fonction du nombre d'entité. (Peut dépasser les 40/50 facilement. Pour l'exemple des cochons, j'avais atteints 1800...)

- Glide/GlideFly : Permet de faire comme si vous avez des elytras, sans en avoir. Vous descendez moins vite et en avançant.

- InventoryMove : Permet de modifier son inventaire tout en se déplaçant, un peu comme Among US
Inventaire ouvert avec des clics alors qu'il se déplace. Attention aux inventaires type player où l'ont ne sait pas quand le joueur le ferme car c'est uniquement côté client

- Jesus (WaterWalk) : Permet de marcher sur l'eau.
Le joueur n'envoie pas de PacketPlayInPosition, seulement du PacketPlayInPositionLook, et il alternera une fois sur l'eau (pied dans le l'air, et en dessous de l'eau stationnaire) et une autre fois un peu dans l'eau (Pied dans l'eau stationnaire, et en dessous de l'eau aussi). Il peut également juste aller tout droit (ne pas changer de hauteur). Certains clients évitent ça en sautant sur l'eau

- KillAura : Il permet de faire des 180 pour attaquer un ennemi plus loin que le maximum autorisé. Généralement très chiant pour l'utilisateur lorsqu'il y a beaucoup d'entités mais très pratique en 1v1/2v2.
Malheureusement, le client va faire comme si c'était le joueur. Il n'y a donc pas de comportement anormal à niveau des packets ou autres. Il y a seulement l'attaque en elle même de cibles multiples en un temps record. Le seul truc fiable, c'est que certains cheat attaque toutes les entités, mêmes celles invisibles, alors que d'autres proposent des options pour s'attaquer que celles visibles. On peut donc ce fier à celà, mais ça reste tout de même moins précis.

- NoFall : Désactive les dégâts de chute
Plusieurs manières :
  • la 'fallDistance' ne change pas (reste à 0)
  • cette distance de chute monte mais très peu (et si elle est très grande, est réinitialisé ou bloqué à 2.9)
  • Le joueur simule d'être au sol pour réinitialiser la distance de chute

- NoPitchLimit : Permet de regarder à 360°. À part faire tourner la tête (lolmdr) ça ne sert pas à grand chose. (Par oui, vraiment, c'est horrible à utiliser)
Le 'pitch' de la location du joueur a des valeurs impossible d'accès (normalement, elle doit rester en 90° et -90°).

- NoSlowDown : Permet de se déplacer de manière normal sur de la soul sand/miel.

- NoWeb : NoSlowDown pour les toiles d'araignées.

- Nuker : Casse les blocs autour du joueur.
Casse des blocs qui ne sont pas dans le champs de vision, mais aussi casse beaucoup de blocs/envoie beaucoup de packets Dig en très peu de temps

- PingSpoof : Fausse le ping du joueur. Il joue normalement, mais pour le serveur, le joueur peut avoir plusieurs centaines de ms. (note: cheat présent sur peu de client)
La connexion avec son adresse est reachable en moins de MS que donnée. De plus, plein de threads sur spigot cherche à connaître la fiabilité du ping d'un joueur

- Phase : Permet de passer à travers les blocs. Pas présent dans tout les cheats car est souvent buggé.

- Scaffold : Permet de poser des blocs sous le joueur.
Le joueur pose des blocs sans voir ou il les pose.

- Sneak : Le joueur se déplace normalement même en sneakant.
Le joueur sneak et sprint en même temps

- Speed : Permet d'aller plus vite. Généralement la vitesse de la personne est modifiable, pouvant aller jusqu'à 15x plus vite que la normal (lorsque c'est trop haut, Spigot nerf lui même).
Certains client vraiment pas ouf envoie trop de packet Position, sinon généralement ils en envoient autant que les autres clients, mais disent qu'il vont plus loin. C'est pourquoi, une simple vérification grâce à l'event PlayerMove suffit.

- Spider : Permet de monter au mur. Généralement utiliser pour faire comme si l'on ne volait pas.
Certains cheat envoie des PackPlayInPosition, mais ce n'est pas le cas de tous. C'est pourquoi je pense qu'il faut plutôt analyser le comportement du joueur (S'il monte, qu'il n'y a rien en dessous de lui et au moins un mur à côté de lui)

- Step : Permet de se téléporter en haut d'un mur. Il peut passer au dessus de 0.5 blocs jusqu'à parfois 20 blocs.
Le joueur à un déplacement instantané de plus de 0.5. Attention aux entités types bateaux, ou aux blocs non complet comme les couches de neiges.

- XRay : Permet de voir à travers les blocks pour savoir ou se trouve les minerais intéressants. Le joueur mine donc en direction d'eux, ce qui est très flagrant lorsqu'on est en spectateur à côté de lui.
Y'en a pas, comme c'est un texture pack. Après il faut analyser son comportement (s'il mine que en direction du diamant) ou alors fait un obfusquateur

S'il y en manque n'hésitez pas à me prévenir.

Et maintenant, comment les contrer sans être juste à côté d'eux ?
Il y a plein d'antiCheats disponible sur internet. Spigot à même fait quelques listes . Les plus utilisées actuellement :
Sinon :

À propos des Usebugs :

Attention à ça. L'usebug peut être la faute de plusieurs choses :
  • Mojang car c'est un bug côté client
  • Spigot/Sponge/Bungeecord car c'est un bug du serveur
  • Plugin car c'est un plugin qui le créé
Si c'est un bug de Mojang, vous avez plusieurs solutions :
  • ça vient d'une version final, donc essayez d'avoir un plugin qui tente de régler le problème.
  • ça vient d'une pre-release, alors ce n'est pas très grave, attendez un peu.

Lorsque c'est un bug du serveur, n'hésitez surtout pas à le report aux développeurs ! (surtout ceux de Sponge, qui sont nombreux et présent).
N'oubliez pas de prendre la dernière version stable.

La dernière catégorie est à prendre en compte, notamment lorsque vous avez plusieurs plugins.
Pourquoi ?
Si un plugin ajoute un effet, et qu'un second en ajoute un autre, le joueur peut faire n'importe quoi, contre son gré.
Ce n'est pas parce que vous avez fait tout les plugins qu'il faut ignorer cette partie là, au contraire. Un plugin en ligne aura eu des retours de plusieurs personnes, notamment des bugs. La, personne n'est la pour vous donner les erreurs ou vous montrer que vous pouvez fly en utilisant un item précis...
Faites attention aux plugins que vous faites et que vous téléchargez !

Je me souviens plus de ce que je voulais mettre ici, c'est triste.
3 ans après, décembre 2020, je me souviens ENFIN de ce que je voulais mettre ici.

Un anticheat a plusieurs manières de détecter un tricheur :
  • Vérifications des variables : Vérification si la distance de chute est valide
  • Prédictions : Calcul de la distance de chute
  • Machine Learning : Comparaison de la distance de chute avec une base de données

Vérifications des variablesPrédictionsMachine Learning
ComplexitéFaibleMoyenne : Beaucoup de variable à prendre en compteGrande : Nécessite beaucoup de données pour commencer
FiabilitéMoyenForte avec les bon calculsFort avec beaucoup de valeurs
Viabilité au fil des versionsMoyenFaibleForte
(évidemment, j'ai bug et j'ai perdu ce que j'avais écris, bref)

Ces 3 techniques sont légitimes, et doivent être utilisé dans des cas différents. Par exemple, la prédictions est bien pour de l'anti-knockback, et le machine learning serai mieux pour du kill aura.

N'oubliez pas de prendre en compte le ping du joueur. Car à chaque fois il peut intervenir.
Précisions en termes de packets envoyés par le joueur :
Un joueur normal qui ne bouge pas envoie entre 17 et 25 PacketPlayInFlying (ping compris, sinon c'est 21 son max). Au dessus le joueur à un comportement anormal. En dessous il se déplace.
Un joueur ne doit pas envoyer que du PacketPlayInKeepAlive. C'est totalement anormal, il y a au moins du Flying/Position/PositionLook. (Note: il est obligé d'envoyer 1 keepAlive toute les 2 secondes, sinon il perd la connexion achève serveur, d'où le nom).
 
Dernière édition:

compte inactif

Architecte en herbe
9 Juin 2014
1 382
132
187
25
Belgique
Il y a aussi les bugs qui, avec certains mods (ceux de mon modpack par exemple), donnent un cheat remarquable (maintenant ça marche en vanilla 1.12):
 

Elikill

Développeur Java trop occupé
23 Février 2014
1 387
204
187
23
eliapp.fr
Salut,

(J'avais oublié ton message)

De l'usebug, j'ajouterai une petite partie la dessus ;)
Sinon la tu t'es aussi amusé avec le /effect x)
 

Algreal

Cordonier
14 Août 2017
40
11
73
go faire un topic pour nous apprendre à cheat

ptdr le jittrer click mauvais pour la santé :')
 
Dernière édition par un modérateur:

Elikill

Développeur Java trop occupé
23 Février 2014
1 387
204
187
23
eliapp.fr

Algreal

Cordonier
14 Août 2017
40
11
73
et faire de la muscu par exemple c'est mauvais pour la santé? ou soulever des trucs lourd
 

Elikill

Développeur Java trop occupé
23 Février 2014
1 387
204
187
23
eliapp.fr
et faire de la muscu par exemple c'est mauvais pour la santé? ou soulever des trucs lourd
Non puisque ça fait travailler les muscles normalement. Le jitterclick consiste a utiliser les nerfs de ses muscles, pour faire des vibrations qui fera cliquer l'utilisateur de cette méthode.
En gros, tu demandes a ta main de faire un truc qu'elle ne devrait pas faire normalement. D’où les problèmes pouvant arriver comme montré plus haut.
Bref, maintenant va te renseigner sur google sur quoi correspond le jitterclick si tu n'as toujours pas compris.
 
  • J'aime
Reactions: DiscowZombie