L’obfuscation BSP expliquée : ce qu’elle apporte aux maps GMod
L’obfuscation BSP modifie une map compilée pour qu’elle tourne normalement tout en étant plus dure à reconstruire. Fonctionnement, risques et limites.
L’obfuscation BSP modifie la façon dont une map compilée est représentée, de sorte que le moteur la charge toujours normalement alors que les outils de reconstruction donnent des résultats moins exploitables. Elle ne rend pas une map illisible et ce n’est pas une protection contre la copie. Son but est qu’il devienne plus laborieux de décompiler la map sans effort et de la retravailler dans l’éditeur.
Ce que l’obfuscation signifie pour un BSP
Tu connais peut-être le terme pour le code d’un programme : un script obfusqué fait la même chose qu’avant, mais il est difficile à suivre pour un humain. Pour une map, l’idée est proche.
Un BSP contient deux sortes d’informations. Le moteur a besoin de la première pour afficher et simuler la map. La seconde aide surtout les humains et les éditeurs : chemins parlants, ID d’éditeur, restes du processus de travail.
L’obfuscation vise la seconde et peut procéder en plusieurs étapes :
- Réduire l’information. Tout ce dont le moteur n’a pas besoin peut disparaître. Cela comprend les ID d’éditeur sur les entités ainsi que les fichiers sources, les compile logs et les restes de sauvegardes arrivés par erreur dans le pakfile. Cette partie est aussi appelée cleanup.
- Modifier la représentation. Le fichier est reconstruit de façon à correspondre moins directement à une version confortable pour l’éditeur. Les chemins de matériaux en sont un bon exemple : un chemin parlant devient un chemin neutre, et les références dans la map sont adaptées en conséquence.
Ce que l’obfuscation complique
- La reconstruction automatique. Un décompilateur produit des résultats moins propres, qui demandent plus de travail manuel. La décompilation BSP expliquée décrit ce qu’une décompilation rend normalement.
- L’orientation. Sans noms ni chemins parlants, il faut plus de temps pour comprendre la map de quelqu’un d’autre.
- La réutilisation du contenu. Les matériaux renommés sont plus difficiles à identifier et à reprendre dans d’autres projets.
- Les indices sur ta façon de travailler. Les fichiers sources et les logs retirés ne révèlent plus rien de tes dossiers, de tes outils ni de tes versions intermédiaires.
La map doit toujours fonctionner
La condition la plus importante de toute obfuscation : la map doit se charger et se jouer exactement comme avant. Cela limite ce qui peut être modifié.
| Domaine | Pourquoi il doit être conservé |
|---|---|
Noms d’entités (targetname) | La logique de la map et les scripts serveur s’adressent aux entités par ce biais |
| Connexions entre entités | Les portes, les boutons et les triggers dépendent des inputs et des outputs |
| Classes d’entités | Le moteur crée les objets d’après le nom de la classe |
| Références aux matériaux, models et sons | Chaque référence doit pointer vers un fichier existant |
| Header, table des lumps, offsets | Sans structure cohérente, la map ne se charge pas |
Si un chemin de matériau est renommé sans que toutes les références suivent, tu vois en jeu le damier des textures manquantes. Une méthode sérieuse valide donc de nouveau le fichier de sortie après le traitement et ne livre pas un fichier qui échoue à ce contrôle.
Un contrôle de structure ne remplace toutefois pas un test en jeu. Avant de mettre en ligne une map obfusquée, parcours-la une fois sur ton serveur :
- Charge la map sur un serveur de test et vérifie qu’il n’y a pas d’erreurs dans la console.
- Traverse la map et regarde les textures, les models et les reflets.
- Actionne les portes, les boutons, les triggers et les téléporteurs.
- Vérifie les addons qui mémorisent des entités de la map, par exemple l’attribution des portes ou les objets placés de façon permanente.
- Connecte-toi avec un second client qui reçoit la map par ta voie de téléchargement habituelle.
Le point 4 vaut d’ailleurs pour chaque nouvelle version d’une map, y compris après une mise à jour ordinaire.
Les limites de l’obfuscation
Le moteur doit pouvoir lire tout ce dont il a besoin pour le chargement. Il en résulte des limites fixes :
- Une map obfusquée reste analysable en principe.
- Les décompilateurs évoluent sans cesse. Un obstacle élevé aujourd’hui peut être plus bas demain.
- Avec assez de temps, n’importe quelle map peut être reconstruite à la main.
- L’obfuscation n’empêche pas le fichier d’être copié tel quel et utilisé sur un autre serveur.
| L’obfuscation aide contre | L’obfuscation n’aide pas contre |
|---|---|
| la décompilation sans effort et la réutilisation dans l’éditeur | la copie du fichier fini |
| la compréhension rapide de la map de quelqu’un d’autre | l’utilisation sur d’autres serveurs |
| la reprise de contenu dans d’autres projets | une reconstruction à la main |
D’autres outils couvrent la colonne de droite. Un fingerprint rend les copies traçables, et une map Server-Exclusive ne tourne entièrement que sur un serveur sous licence. Protéger ta map GMod des leaks explique comment ces éléments s’assemblent.
L’obfuscation sur bspmarket.de
Dans la BSP Protection de bspmarket.de, Obfuscation est un niveau de protection à part entière. Le site précise explicitement que le but n’est pas de rendre la map illisible, mais de compliquer les voies de reconstruction typiques. Les points suivants sont documentés publiquement :
- L’obfuscation agit en plusieurs couches contrôlées.
- Seuls les chemins de matériaux sont renommés. Les noms d’entités et les targetnames sont conservés pour que les scripts serveur continuent de fonctionner.
- Le fichier de sortie est validé de nouveau. En cas d’échec, il n’y a pas de résultat plutôt qu’une map cassée.
- Le fichier d’origine n’est pas modifié, la protection crée une sortie séparée.
- Tu n’es débité que pour un job terminé avec succès.
- Un test sur le serveur cible reste recommandé avant la publication.
La page Comment fonctionne la protection explique quels détails ne sont volontairement pas publiés, et pourquoi.
Questions fréquentes
L’obfuscation change-t-elle l’aspect ou le gameplay de la map ?
Elle n’est pas censée le faire. Les noms et les références utiles au fonctionnement sont conservés, et la sortie est contrôlée sur le plan structurel. Un court test sur ton propre serveur vaut quand même la peine.
L’obfuscation rend-elle la décompilation impossible ?
Non. Elle gêne les tentatives de décompilation typiques et réduit les informations utiles à l’éditeur. Pour les maps Source, une décompilation ne peut pas être exclue.
Puis-je encore modifier une map obfusquée plus tard ?
Tu ne modifies pas le BSP obfusqué. Tu modifies ton VMF, tu recompiles et tu protèges de nouveau la nouvelle version. Garde donc toujours le VMF et le BSP d’origine en lieu sûr.
Ai-je besoin de l’obfuscation si j’utilise déjà un fingerprint ?
Ils règlent des problèmes différents. Le fingerprint rend une copie traçable, l’obfuscation complique la réutilisation dans l’éditeur. Ensemble, ils couvrent plus que chacune des deux mesures prise seule.