Obfuscation JavaScript par machine virtuelle
Obfuscateur JavaScript
JSVeil transforme votre JavaScript en bytecode personnalisé, exécuté par une machine virtuelle générée pour votre code. Il devient ainsi plus difficile à comprendre, à reproduire et à modifier.
Essayer maintenantconst project = {
name: "JSVeil",
greeting: "Hello",
excited: true
};
function createFormatter(settings) {
const prefix = settings.greeting + ", ";
let calls = 0;
return function (name) {
const label = String(name).trim() || "friend";
calls += 1;
let suffix = "";
if (settings.excited) {
for (let i = 0; i < calls && i < 3; i++) {
suffix += "!";
}
} else {
suffix = ".";
}
return prefix + label + suffix;
};
}
const greet = createFormatter(project);
console.log(greet(project.name));
(function/* JSVeil */ He(Y,d){const Q=d.Object,ee=d.Array,T=d.Function,fe=d.Reflect,S=d.Error,G=d.TypeError,ae=d.ReferenceError,Bt=d.RegExp,dt=d.BigInt,Ft=d.atob,bt=d.String.fromCharCode,Z=fe.apply,Ut=fe.construct,B=Q.defineProperty,Je=Q.getOwnPropertyDescriptor,F=Q.freeze,E=Math.imul,we=T.prototype.toString,ge=T.call.bind(T.call),Ne=T.call.bind(d.String.prototype.charCodeAt),kt=T.call.bind(ee.prototype.slice),Re=T.call.bind(ee.prototype.push),he=T.call.bind(ee.prototype.pop),qt=T.call.bind(ee.prototype.lastIndexOf),X=T.call.bind(WeakMap.prototype.get),me=T.call.bind(WeakMap.prototype.set);function ye(e){let t=2166136261;for(let n=0;n<e.length;n++)t=E(t^Ne(e,n),16777619);return t>>>0}const ve={},Qe=new WeakMap;let Xe=0;B(ve,"v",{get(){return Xe++,7}}),me(Qe,ve,9);const Ye=ve.v^7|Xe^1|X(Qe,ve)^9|E(2147483647,3)^2147483645,z=ye(Z(we,He,[]))^Ye,Ae=d.atob(Y[0]);let $=Y[1]^z;const Ce=new Uint8Array(Ae.length);for(let e=0;e<Ae.length;e++)$^=$<<13,$^=$>>>17,$^=$<<5,Ce[e]=Ne(Ae,e)^$&255;function Ze(e,t){if(!t)return e;if(t<0||t>134217728)throw new S;const n=new Uint8Array(t);let o=0,r=0;function i(f){if(f===15){let u;do{if(o>=e.length)throw new S;u=e[o++],f+=u}while(u===255)}return f}for(;o<e.length;){const f=e[o++],u=i(f>>>4);if(o+u>e.length||r+u>t)throw new S;if(n.set(e.subarray(o,o+u),r),o+=u,r+=u,o===e.length)break;if(o+2>e.length)throw new S;const c=e[o++]|e[o++]<<8;if(!c||c>r)throw new S;const a=i(f&15)+4;if(r+a>t)throw new S;if(a<=c)n.set(n.subarray(r-c,r-c+a),r),r+=a;else forÉchec de l’obfuscation
Entrée
example.jsRésultat
// Le résultat apparaîtra ici.
Vous pourrez ensuite copier ou télécharger le code.À propos de JSVeil
JSVeil protège votre JavaScript par obfuscation à l’aide d’une machine virtuelle (VM). Cette technique rend l’analyse et la rétro-ingénierie du code plus difficiles. Vous pouvez ajuster les protections selon votre projet.
Version gratuite
Gratuit jusqu’à 30 Ko.
Options d’obfuscation personnalisées
Choisissez comment obfusquer votre code et où autoriser son exécution. Chaque option s’active séparément.
Graine personnalisée
La graine détermine les choix aléatoires pendant l’obfuscation. Le même code, les mêmes options, la même version du compilateur et la même graine permettent de reproduire un résultat.
Si l’option est désactivée, le compilateur génère une nouvelle graine aléatoire cryptographiquement sûre à chaque obfuscation.
Renommer les identifiants globaux
Renomme les variables et fonctions globales prises en charge pour rendre la structure d’origine moins reconnaissable.
Vérifiez au préalable les références utilisées dans le HTML, les autres scripts et les interfaces publiques.
Faux flux de contrôle
Ajoute des branches de diversion qui compliquent la lecture du chemin d’exécution réel.
Peut augmenter la taille du fichier et le temps d’exécution. Cette fonction facultative est désactivée par défaut.
Vérification de l’environnement
Cette option restreint l’exécution dans les outils d’automatisation, jsdom, Node.js et les environnements similaires.
Seule l’exécution dans un navigateur est autorisée.
Restriction par domaine
Accepte un ou plusieurs noms d’hôte ainsi que des jokers pour les sous-domaines. Les noms internationalisés sont convertis en ASCII.
*.example.com n’inclut pas example.com. Ajoutez le domaine principal séparément si nécessaire.
Détection des DevTools
Vérifie régulièrement si les outils de développement sont ouverts. L’intervalle par défaut est de 1 500 ms.
En cas de détection, les protections à l’exécution s’activent.
Vérification des pauses de la VM
Lorsque cette option est activée, elle surveille les longues pauses pendant l’exécution du code protégé, par exemple lors du débogage. Par défaut, chaque pause détectée d’au moins 15 secondes compte pour une occurrence. Après deux de ces pauses, la VM en cours cesse d’exécuter le code protégé.
Le critère est le nombre de longues pauses, pas la durée totale d’exécution du code. Vous pouvez régler la durée minimale d’une pause et le nombre de pauses entraînant l’arrêt.
Désactiver la sortie console
Désactive la sortie console lorsque le script obfusqué s’exécute.
Utile si vous n’avez pas besoin de journaux en production, mais cela complique aussi le diagnostic des erreurs.
Protection contre le débogage
Déclenche régulièrement des instructions debugger pour interrompre le débogage. L’intervalle par défaut est de 1 000 ms.
Questions fréquentes
Qu’est-ce que JSVeil ?
JSVeil protège votre JavaScript par obfuscation à l’aide d’une machine virtuelle (VM). Cette technique rend l’analyse et la rétro-ingénierie du code plus difficiles. Vous pouvez ajuster les protections selon votre projet.
Qu’est-ce que l’obfuscation VM en JavaScript ?
L’obfuscation VM transforme le code à protéger en bytecode personnalisé. Une machine virtuelle écrite en JavaScript est intégrée au fichier pour l’exécuter. Cette couche supplémentaire rend l’analyse et la rétro-ingénierie du code plus difficiles.
Conservez-vous mon code source ?
Jamais. Votre code source sert uniquement à traiter votre demande d’obfuscation en cours et n’est pas conservé ensuite.
JSVeil est-il gratuit ?
Oui. Vous pouvez obfusquer gratuitement des fichiers JavaScript jusqu’à 30 Ko. N’hésitez pas à essayer avec votre propre code.
Besoin d’une obfuscation plus poussée ou de traiter des fichiers plus volumineux ?
Écrivez-nous à pour nous faire part de vos besoins. Nous pourrons vous proposer une solution adaptée à votre projet.