Nemesis : dans les coulisses du meilleur anti-cheat Minecraft
POSTÉ LE 11/09/2026
Paladium est l'un des plus gros serveur minecraft français, ouvert depuis 2015, avec plus de 700.000 joueurs uniques et jusqu'à 6.000 connectés en simultané. Comme tout serveur qui grandit, on a dû faire face à la triche, à grande échelle. Nemesis, c'est notre réponse à ce problème, faite maison plutôt que prise toute faite. Dans cet article, on ouvre le capot et on vous montre comment elle tourne.
La triche sur Minecraft
Minecraft fait confiance au client par défaut. Quand le jeu du joueur annonce une position, le serveur l'enregistre, sans vraiment se demander si le déplacement était possible. Pareil en combat, le client signale qu'il a touché quelqu'un, le serveur applique les dégâts. La vitesse, la portée, la cadence des coups, tout repose sur ce que le client veut bien raconter.
Et le jeu est écrit en Java, un langage qui n'a aucune vocation de sécurité par défaut. Son code s'ouvre et se modifie directement. On peut aussi laisser les fichiers tranquilles et injecter du code dans une partie déjà lancée. Ou rester carrément en dehors, avec un logiciel externe qui lit ce qui se passe dans le jeu et agit à sa place.
Deux façons de voir le problème
On peut résumer l'anti-cheat à deux questions.
Est-ce que ce que fait le joueur est physiquement possible ? Le serveur regarde en continu la vitesse, la réaction, la précision, et vérifie que tout ça reste cohérent avec ce qu'un humain peut faire.
Est-ce que la machine du joueur est fiable ? On vérifie en continu l'intégrité du jeu qui tourne, pour s'assurer qu'aucun cheat ne montre au joueur une info qu'il ne devrait pas avoir, même sans toucher à un seul mouvement.
La plupart des serveurs n'ont pas la possibilité d'interagir avec le client comme nous le faisons. Paladium a son propre launcher, et ça change tout. Nemesis peut donc répondre aux deux questions, pas seulement à la première.
Du simple mod au matériel
Tricher, ça va du très simple au très poussé.
- Le client modifié. Le plus courant, on ajoute des mods qui donnent un avantage, avec les mêmes outils que n'importe quel mod légitime.
- L'injection. Le jeu n'est pas touché sur le disque. Une bibliothèque est chargée à la volée dans une partie déjà lancée, la même technique d'injection utilisée par des mods parfaitement légitimes.
- Le cheat natif. Du code bas niveau, hors Java, branché au jeu via la passerelle prévue entre Java et du code natif (JNI). Plus dur à écrire, mais aussi plus dur à repérer avec les outils habituels de détection côté Java.
- La lecture mémoire externe. Un programme complètement séparé, qui lit et modifie directement la mémoire du jeu depuis l'extérieur, sans jamais tourner dedans, comme n'importe quel logiciel utilisateur normal.
- Le driver kernel. La même chose, mais depuis un pilote système avec les privilèges du système lui-même, invisible pour la plupart des logiciels de sécurité classiques.
- Le matériel dédié. Une carte branchée physiquement sur la machine, qui lit la mémoire directement par le bus, ce qu'on appelle du DMA, sans jamais exécuter la moindre ligne de code sur l'ordinateur ciblé.
La philosophie
C'est une philosophie qui traverse tout Nemesis, peu importe le côté, serveur ou client, bloquer autant que possible avant même de parler de sanction. Ça se joue en plusieurs temps. D'abord, on essaie d'empêcher le cheat de fonctionner directement, rendre le mouvement impossible, rejeter le paquet, empêcher l'effet du cheat plutôt que juste le repérer. Si le cheat est trop profond pour être bloqué proprement, le jeu se ferme plutôt que de continuer à tourner dans un état qu'on ne peut plus garantir fiable. La sanction n'arrive qu'en dernier recours, si rien de tout ça n'a suffi. L'idée, c'est de ne pas punir un joueur qui a simplement eu la curiosité de tester un cheat public trouvé sur internet, sans rien faire de spécifique contre Paladium.
Notre protection anti x-ray est un exemple concret de cette philosophie de blocage, côté serveur. Normalement, ton jeu reçoit d'un coup les infos de tous les blocs autour de toi, même ceux enterrés que tu ne vois pas, minerais compris. Un cheat x-ray n'a qu'à lire ces infos que ton jeu possède, et te montrer les minerais cachés. Avec Nemesis, tous les minerais d'un chunk t'arrivent déguisés en simple pierre, et le serveur ne t'envoie le vrai bloc qu'au moment où il devient réellement visible à tes yeux. Le cheat n'a donc rien à lire, l'info n'existe pas encore de son côté.
Il y a un détail technique en plus derrière ça. Pour que ta latence ne crée pas de petit décalage au moment où un bloc devient visible, le serveur anticipe. Il prédit ta trajectoire et ta vitesse, liste tous les minerais que tu pourrais voir, et les envoie en avance dans une zone sécurisée de la mémoire de ton client. Le passage de pierre à minerai se fait donc directement dans ton jeu, au bon moment, sans délai perceptible. Et niveau sécurité, même si un x-ray arrivait à fouiller cette zone, il ne verrait que les minerais tout proches de toi, et seulement pendant un très court moment.
Ce qu'on regarde côté serveur
Cette partie tourne entièrement côté serveur, sans rien demander au client, et répond à la première question posée plus haut. Est-ce que ce que fait le joueur est physiquement possible ?
Le principe est simple. À partir de tous les paquets envoyés par le joueur, le serveur construit un clone numérique de son client, et le simule en parallèle pour vérifier qu'il respecte bien les règles du jeu. On ne fait pas que du calcul de déplacement, c'est une vraie simulation de bout en bout.
Concrètement, c'est un vrai jeu qui tourne en parallèle, sans la partie graphique. Le ping, les TPS, les mouvements, les interactions, tout est simulé. Il faut voir ça comme un deuxième serveur, avec tous les joueurs dessus, qui compare en permanence chaque joueur à son clone. Cette couche sert souvent de garde-fou pour ce que le client aurait raté, mais pour limiter les faux positifs, malgré un taux d'erreur déjà très faible, elle reste très majoritairement soumise à une revue manuelle avant sanction.
Ce qu'on regarde côté client
Reste la deuxième question posée plus haut. Est-ce que la machine du joueur est fiable ? Ici, on ne regarde plus seulement les paquets que le jeu envoie, on regarde son état réel pendant qu'il tourne.
Si on reprend le spectre vu plus haut, un exemple simplifié par niveau :
- Client modifié. Tout ce qui tourne dans le jeu doit correspondre à quelque chose qu'on connaît et qu'on attend. Un mod inconnu ou modifié chez un joueur, c'est un signal.
- Injection. On regarde ce qui est réellement chargé dans le processus du jeu, pas juste ce qui a été lancé au démarrage. Du code qui débarque après coup, sans passer par le chargement normal, c'est un signal.
- Cheat natif. Quand le jeu discute avec du code natif, on surveille ces échanges. Un appel qui n'a rien à faire là, c'est un signal.
- Lecture mémoire externe. On garde un œil sur qui vient lire la mémoire du jeu depuis l'extérieur. Si un accès ne vient pas légitimement du jeu lui-même, c'est un signal.
- Driver kernel / matériel dédié (DMA). Driver kernel ou carte branchée physiquement dans la machine, même combat, on a un contrôle total sur la mémoire dans laquelle le jeu tourne, et donc de quoi détecter tout ce qui la touche. Ça passe par plusieurs vérifications, notamment des copies chiffrées et des hash d'intégrité, qui disent à tout moment si une zone a été modifiée, ou même simplement lue, des try/catch qui réagissent au moindre accès suspect, ou encore des honeypots, des zones volontairement exposées pour piéger qui vient y toucher.
Il y a aussi tout un pan dédié à protéger Nemesis lui-même, pas seulement à repérer la triche. De l'anti-debug à plusieurs niveaux, pour qu'on ne puisse pas brancher un débogueur dessus et l'observer tourner. De l'anti-VM, pour repérer si le jeu tourne dans une machine virtuelle plutôt que sur une vraie machine, un classique pour qui veut analyser tranquillement sans risquer son vrai poste. Et une énumération des process externes, pour savoir ce qui tourne à côté du jeu et repérer les outils d'analyse ou de triche connus.
Ce sont des exemples volontairement simplifiés. En réalité, Nemesis embarque plus de 40 vecteurs de détection différents, mis à jour tous les jours. Et c'est presque jamais blanc ou noir. Le plus souvent, une détection est un score cumulé sur plusieurs signaux, avec des centaines de micro-facteurs qui comptent pour chaque chose.
Ce qu'on regarde pour les doubles comptes
Un ban qui saute juste en recréant un compte, ça ne sert à rien. Cette partie répond à cette question précise. Comment savoir que deux comptes différents sont en réalité le même joueur ? La détection s'appuie sur un score qui agrège un grand nombre de vecteurs, matériels et logiciels, croisés ensemble plutôt que jugés un par un.
Côté matériel, l'idée est de rattacher une sanction à la machine, pas seulement au compte. Il y a d'abord une vraie liste d'identifiants classiques, le disque, la carte mère, et une dizaine d'autres composants au total. Rien d'exotique, c'est le genre de HWID que la plupart des anti-cheats sérieux utilisent.
Et puis il y a un étage plus poussé, actuellement en test chez certains joueurs, qui s'appuie sur un vrai concept de recherche académique, la PUF (Physically Unclonable Function). Même deux composants strictement identiques, sortis de la même chaîne de fabrication, ne sont jamais parfaitement identiques au niveau physique. Les tolérances de fabrication créent des micro-variations invisibles à l'œil mais mesurables électriquement. Sur la RAM, ça se traduit par deux approches connues dans la littérature, mesurer le temps de décroissance naturel d'une cellule mémoire une fois qu'on arrête de la rafraîchir, ou mesurer les micro-latences d'accès en lecture et en écriture. Dans les deux cas, le résultat dépend directement des propriétés électriques réelles des transistors de cette barrette précise, impossible à reproduire ailleurs par du logiciel. Même logique côté micro. Chaque microphone a une réponse en fréquence légèrement différente, due aux tolérances de fabrication de sa membrane et de sa capsule. En captant un court échantillon audio et en analysant cette courbe de réponse, on obtient une signature propre à cet exemplaire précis de microphone, même face à un modèle strictement identique sorti de la même usine. Dans les deux cas, c'est une empreinte qu'on ne change pas en réinstallant Windows ou en recréant un compte, elle est littéralement gravée dans le matériel. La RAM et le micro ne sont d'ailleurs que la partie émergée de cette recherche. Derrière, on creuse le fonctionnement le plus profond d'une machine, avec un vrai travail de recherche, pour inventer des identifiants qui n'existent littéralement nulle part ailleurs.
Petit fun fact au passage, un de ces tests a fini par griller une carte graphique, une carte de dev, sur laquelle ce risque était attendu et assumé. On teste vraiment, en conditions réelles, sur des pistes très peu documentées, voire pas du tout. C'est précisément ce genre de travail qui pousse Nemesis au niveau le plus haut possible. Et pour être clair, il n'y a jamais eu le moindre risque pour les joueurs là-dedans, ce genre de chose ne passe jamais en production avant d'avoir traversé un paquet de paliers de test.
Côté réseau, on ne compare pas juste deux adresses IP identiques. La corrélation se fait par géolocalisation et par score de probabilité. Des comptes qui se connectent régulièrement depuis des zones cohérentes entre elles pèsent plus lourd dans le score qu'une simple coïncidence d'adresse. On détecte aussi les IP non résidentielles, typiquement des VPN ou des proxys utilisés pour masquer une connexion. Et il y a le reste, empilé avec tout ça, l'historique de pseudo et de skin d'un compte, sa date de création, le fait qu'il se soit déjà connecté sur d'autres serveurs, la façon de jouer elle-même, parce qu'un même joueur garde ses habitudes d'un compte à l'autre. Pris séparément, aucun de ces signaux ne suffit, mais empilés, ça pousse l'analyse très loin. Un compte qui coche trop de ces cases est automatiquement flag, il passe sous surveillance, avec une analyse manuelle plus poussée derrière, et peut se retrouver soumis à des restrictions invisibles ou à des tests aléatoires, sans jamais le savoir.
On est d'ailleurs assez confiants dans ce système pour avoir désactivé les bans par IP. On ne sanctionne plus que par empreinte matérielle, ce qui garantit le meilleur niveau de sécurité sans jamais pénaliser un foyer entier ou un joueur qui hérite d'une IP réattribuée par son fournisseur.
De la détection à la sanction
C'est la partie que les joueurs vivent le plus directement, autant être clair. Comme on l'a vu, le système bloque avant de sanctionner, et une détection ne bannit personne automatiquement par défaut. Avant qu'un vecteur ait le droit de sanctionner sans intervention humaine, il passe par une phase de validation qui peut durer plusieurs mois, réglages, confrontation à des cas réels, observation dans la durée. Le seuil est strict, au moins un mois consécutif sans le moindre faux positif avant toute automatisation. Et rien n'est figé. Maintenance, mises à jour, sécurité, des détections sont retirées, désactivées un temps ou ajoutées, à intervalles pas toujours prévisibles. Le système change presque tous les jours sans que ça se voie de l'extérieur.
Le délai entre détection et sanction va de quasi instantané à environ 24 heures, selon la gravité du cas, cumulée avec un facteur aléatoire. Ce facteur empêche les développeurs de cheat de corréler le moment de la sanction avec ce qui l'a déclenchée. Un délai fixe après le même type d'action leur dirait ce qui a été repéré. Les sanctions quasi instantanées sont réservées aux cas qui présentent un risque direct pour l'expérience d'autres joueurs. Par exemple, un tricheur sur le point de tuer ou de piller un autre joueur. Dans ce cas, protéger cet autre joueur en temps réel passe avant la protection contre la corrélation. La vraie condition est plus complexe que ce simple exemple. Plein de facteurs rentrent en compte pour garantir la sécurité malgré tout, mais l'idée reste toujours de trouver le bon curseur.
Résultat, sur plus d'un an d'utilisation réelle, un taux de faux positif proche de zéro. On ne prétend pas à la perfection, personne ne le peut honnêtement. Mais au moindre doute, le cas part en revue humaine plutôt qu'en automatique. C'est plus lent, on l'assume. Un joueur banni à tort coûte bien plus cher en confiance que le temps passé à vérifier.
Et si une sanction est contestée, on ne répond pas sur parole. Tous les logs de détection sont conservés, et anonymisés. Ils gardent le contexte technique du cas, ce qui a déclenché la détection et dans quelles conditions, détaché de l'identité du joueur. Quand une contestation arrive, on reprend le cas intégralement à partir de ces logs. On rejoue ce que le système a vu et on revérifie chaque étape, avec un humain aux commandes. Si la détection tient, la sanction tient. Si quelque chose cloche, elle saute.
En chiffres
Sur les six derniers mois :
- 8.900 détections, tous vecteurs confondus (plusieurs peuvent concerner un même joueur).
- 1.124 sanctions automatiques, appliquées sans intervention humaine.
- 2.020 bans pour triche au total, depuis la mise en place du système.
- Un délai moyen de détection de 193 secondes.
Côté ingénierie, pour Nemesis au global, +1.500 commits, pour plus de 57.000 lignes de code au total.
La suite
La direction pour la suite, un programme complètement à part du jeu, avec un composant qui tourne au niveau du noyau, donc au même niveau de privilège que l'OS lui-même. C'est le chemin qu'ont pris les anti-cheats les plus poussés sur d'autres jeux (Vanguard chez Riot, EasyAntiCheat, BattlEye), pour une raison simple. À ce niveau, on voit l'état réel de la machine sans dépendre de ce que Windows ou un programme utilisateur veut bien montrer, et le composant peut être actif avant même que le jeu soit lancé.
Un programme séparé du jeu, à ce niveau de privilège, enlève des contraintes inhérentes à toute vérification qui tourne dans le même processus que ce qu'elle surveille. C'est aujourd'hui un chantier de recherche et développement. Ça ne va pas rajouter un meilleur niveau de détection, celui-ci est déjà là où il doit être. Ça va surtout permettre un travail plus simple, pensé pour durer sur le long terme.
La transparence
Aujourd'hui nous publions cet article parce que les joueurs de Paladium ont le droit de comprendre, au moins dans les grandes lignes, ce qui tourne sur leur machine. La confiance se gagne en montrant le travail, pas en le promettant. Ensuite parce qu'on est fiers de ce qu'on a construit. On estime que Nemesis est aujourd'hui le meilleur anti-cheat Minecraft existant. C'est une opinion, on l'assume. Et ça nous semblait valoir le coup de le raconter, même en partie.
On ne compte pas s'arrêter là. À moyen terme, on prévoit de mettre en place un système d'audit externe, des personnes extérieures à Paladium qui viendront vérifier ce qu'on affirme ici, régulièrement. Sur le long terme, on réfléchit aussi à ouvrir tout ça au plus grand nombre. Rien de concret à annoncer pour l'instant, juste une intention, celle de rendre ce sujet plus accessible et plus partagé.
Merci
Merci à Paladium pour la confiance et pour l'opportunité de mener un projet comme celui-ci depuis le début.
