BSP Protection et leaks

La décompilation BSP expliquée : ce qu’elle te rend vraiment

La décompilation BSP retransforme une map Source compilée en VMF. Ce qui revient, ce qui est perdu et ce qu’une protection anti-décompilation apporte vraiment.

Décompiler, c’est laisser un outil comme BSPSource prendre un fichier BSP compilé et en refaire un fichier VMF, que l’on peut ouvrir dans l’éditeur Hammer. Le résultat est une reconstruction, pas le fichier d’origine : la géométrie et les entités reviennent en grande partie, la structure de travail du mappeur non. Comme le moteur doit pouvoir lire chaque BSP, une map compilée n’est jamais vraiment secrète.

Pourquoi les fichiers BSP peuvent être décompilés

Un BSP n’est pas un conteneur scellé. Le format est connu depuis des années, et pour charger la map le moteur a besoin exactement des données qu’un décompilateur exploite : les brushes pour les collisions, les surfaces avec leurs matériaux, les entités sous forme de texte. Un décompilateur lit ces sections et les réécrit dans le format texte que Hammer comprend. Qu’est-ce qu’un fichier BSP ? montre comment le fichier est structuré.

Il existe des raisons légitimes de décompiler. Les mappeurs s’en servent pour sauver leurs propres projets après la perte du VMF, pour étudier un problème dans une version compilée ou pour apprendre, à partir de maps publiées, comment quelque chose a été construit.

Ce qu’une décompilation te rend

Une bonne décompilation restitue étonnamment beaucoup de choses :

  • les world brushes, reconstruits à partir des données de brush enregistrées
  • les point entities avec toutes leurs propriétés ainsi que leurs inputs et outputs
  • les brush entities comme les portes, les triggers et les func_detail
  • les displacements, c’est-à-dire les surfaces de terrain déformées
  • les props prop_static et les overlays
  • les positions des cubemaps et les areaportals, ces derniers pas toujours au bon endroit
  • l’attribution des matériaux aux surfaces
  • le contenu du pakfile, qui s’extrait comme une archive ordinaire

Pour quelqu’un qui maîtrise Hammer, c’est une base suffisante pour modifier une map et la recompiler.

Ce qui manque ou reste approximatif

Tout ce qui ne servait qu’à l’éditeur n’est pas dans le BSP et ne revient donc pas.

DomaineÉtat après décompilation
VisGroups, groupes, commentairesabsents, ils ne sont jamais écrits dans le BSP
Instancesfusionnées, tout leur contenu se retrouve directement dans la map
Entités entièrement consommées par le compilateur, comme func_visclusterimpossibles à restaurer parfaitement, selon le readme de BSPSource
Formes des brushesle BSP conserve les brushes eux-mêmes, mais les sommets des brushes complexes reviennent imprécis, jusqu’à donner des solids invalides
Textures d’outil comme clipen partie remplacées par nodraw ou interverties
Éclairageles entités de lumière sont là, les lightmaps doivent être recalculées
Fichiers sources des models et des texturesabsents, le pakfile ne contient que les versions compilées

En pratique, cela veut dire du travail de reprise. Les brushes reconstruits peuvent provoquer des leaks ou des solids invalides à la recompilation, et une grande map sans groupes ni VisGroups est difficile à parcourir. Une décompilation est rarement un fichier de travail fini, mais le plus souvent un point de départ utilisable.

Pourquoi une map compilée n’est jamais secrète

Trois faits ne peuvent pas être changés :

  1. Chaque joueur qui rejoint un serveur reçoit le fichier de la map.
  2. Le moteur doit pouvoir lire le fichier en entier.
  3. Ce que le moteur peut lire, un autre programme peut en principe le lire aussi.

Si tu veux protéger une map, ne compte donc pas sur le secret. Les objectifs réalistes sont un effort de reconstruction plus élevé et la preuve de l’origine d’une copie.

Ce que les mesures anti-décompilation apportent vraiment

Les mesures anti-décompilation agissent à deux endroits. D’abord, elles retirent des informations dont le moteur n’a pas besoin mais qu’un éditeur trouverait utiles, comme les ID d’éditeur ou des fichiers sources restés dans le pakfile. Ensuite, elles modifient la façon dont le fichier est représenté, pour que la reconstruction automatique fonctionne moins bien et demande plus de travail manuel.

AttenteRéalité
Plus personne ne peut ouvrir ma mapLe moteur doit la lire, elle reste donc analysable en principe
Une décompilation est exclue ensuiteElle devient plus laborieuse et donne de moins bons résultats
La protection tient pour toujoursLes décompilateurs évoluent sans cesse, les méthodes de protection aussi
L’anti-décompilation remplace une protection contre la copieLe fichier peut toujours être copié tel quel

Le dernier point est souvent oublié : une map obfusquée tourne sur n’importe quel serveur où quelqu’un la copie. L’anti-décompilation protège ton travail contre une réutilisation facile dans l’éditeur, pas contre sa diffusion. Pour cela, il faut d’autres moyens, décrits dans Protéger ta map GMod des leaks.

La contre-vérification compte aussi. Aucune modification d’un BSP ne doit abîmer la map. Les méthodes sérieuses valident de nouveau le fichier de sortie et ne livrent pas un fichier qui échoue à ce contrôle.

bspmarket.de formule volontairement les choses avec prudence pour sa propre BSP Protection : la couche anti-décompilation rend le résultat typique d’une décompilation plus difficile à exploiter, et une protection complète contre la décompilation ne peut pas être garantie pour les fichiers BSP Source. Ce que fait chaque niveau est détaillé sur la page BSP Protection et dans L’obfuscation BSP expliquée. Puisqu’une décompilation ne peut jamais être totalement exclue, un fingerprint est le complément logique : il rend une copie traçable, même si la copie elle-même ne peut pas être empêchée.

Techniquement possible ne veut pas dire autorisé

Le fait qu’une map puisse être décompilée ne dit rien sur ton droit d’utiliser le résultat. Une map qui reflète les choix créatifs de son auteur est protégée en tant qu’œuvre de celui-ci, et la décompilation n’y change rien. Quiconque modifie, republie ou vend les maps d’autrui a en règle générale besoin de l’accord de l’auteur. Les bases du droit d’auteur pour les maps GMod en donne un aperçu, qui n’est pas un conseil juridique.

Questions fréquentes

Tous les fichiers BSP peuvent-ils être décompilés ?

En principe, tout BSP Source peut être analysé, puisque le moteur doit le lire. La qualité du résultat dépend de la map, du décompilateur et de la protection éventuellement appliquée.

La décompilation me rendra-t-elle mon VMF perdu ?

Seulement sous forme de reconstruction. La géométrie et les entités reviennent en grande partie, pas les groupes, les VisGroups ni les instances. Des sauvegardes régulières du VMF restent la meilleure approche.

L’obfuscation empêche-t-elle la décompilation ?

Non. Elle gêne les tentatives de décompilation typiques et réduit les informations utiles à l’éditeur. Une décompilation ne peut pas être exclue.

Un fingerprint survit-il à une décompilation ?

Cela dépend de la méthode et de l’ampleur des modifications. Les méthodes qui s’appuient sur plusieurs signaux indépendants résistent mieux à des modifications isolées. Il n’y a aucune garantie.