Skip to content

Syrrion/SpaceIOBackup

Repository files navigation

Système de Sécurité et Anti-Piratage

SpaceIO intègre plusieurs couches de protection pour sécuriser le code source et vérifier la légitimité de la copie du jeu.

1. Compilation Bytecode (Bytenode)

Pour protéger le code source JavaScript contre l'ingénierie inverse, le projet utilise bytenode.

Fonctionnement

  • Le code source est compilé en bytecode V8 (.jsc) lors du build.
  • Le fichier electron/main.js charge ce bytecode au lieu du code source original.
  • Cela rend le code illisible pour un humain et difficile à décompiler.

Limitations Connues de Bytenode

⚠️ IMPORTANT : Le développement avec bytenode impose certaines contraintes techniques :

  1. Fonctions Fléchées (Arrow Functions) :

    • Les fonctions fléchées asynchrones (et parfois synchrones) peuvent causer des crashs dans Electron/Puppeteer.
    • Elles peuvent aussi poser problème avec le débogueur.
    • Cause : V8 inspecte Function.prototype.toString lors des changements de contexte, ce qui échoue car bytenode retire le code source.
    • Recommandation : Privilégier les fonctions nommées classiques (function myFunc() {}) dans le code critique ou si des crashs inexpliqués surviennent.
  2. Function.prototype.toString :

    • Tout code dépendant de toString() sur une fonction échouera (car le code source est remplacé par un code dummy).
    • Cela peut affecter certaines bibliothèques qui analysent le code des fonctions.
  3. Mode Debug (Node 10.x) :

    • Bytenode ne fonctionne pas en mode debug sur les anciennes versions de Node (moins pertinent pour Electron récent, mais à savoir).

2. Vérification Steam (Steamworks.js)

Le jeu utilise l'API Steamworks pour vérifier que l'utilisateur possède bien une licence valide.

  • Initialisation : Au lancement, electron/main.js tente d'initialiser l'API Steam via steamworks.js.
  • Vérification : Le SecuritySystem (côté renderer) interroge le processus main via IPC (steam:status) pour savoir si l'initialisation a réussi.
  • Bypass Dev : En mode développement (localhost ou 127.0.0.1), cette vérification est ignorée.

3. Mesures de Rétorsion ("Troll Mode")

Si une copie illégitime est détectée (Steam inactif et pas en mode dev), le SecuritySystem active le protocole de "Troll Mode".

Séquence d'activation

  1. Détection : SecuritySystem.checkIntegrity() détecte l'anomalie.
  2. Armement : Un timer est lancé (délai configurable).
  3. Exécution : Une fois le délai écoulé, le chaos commence.

Effets du Troll Mode

  • Blocage : Impossible d'ouvrir de nouvelles applications.
  • Fermeture : Les fenêtres existantes se ferment aléatoirement.
  • Spam : Des popups d'erreur système apparaissent en boucle.
  • BSOD : Après 10 erreurs, un "Blue Screen of Death" futuriste s'affiche en plein écran.
    • Il bloque toute interaction.
    • Il arrête les boucles de jeu (requestAnimationFrame, setInterval).
    • Il affiche un message explicite sur le piratage.
    • Redirection : Appuyer sur une touche ouvre la page Steam du jeu et ferme l'application.

Protection des Actions Système

Le WindowManager intercepte les tentatives d'arrêt, de redémarrage ou d'effacement des données via le menu démarrer. Si le mode pirate est actif, ces actions déclenchent immédiatement le BSOD.

4. Maintenance

Mise à jour de l'App ID Steam

Dans electron/main.js et src/os/SecuritySystem.js, remplacez l'ID de test (480) et l'URL générique par le véritable App ID de SpaceIO avant la publication.

Tests

Pour tester le système de sécurité en local :

  1. Ouvrir src/os/SecuritySystem.js.
  2. Modifier la variable isDev pour qu'elle soit false.
  3. Relancer l'application et attendre l'activation du Troll Mode.

About

No description, website, or topics provided.

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages