JavaScript-Obfuskation mit virtueller Maschine
JavaScript-Obfuskator
JSVeil wandelt Ihr JavaScript in eigenen Bytecode um und erzeugt eine virtuelle Maschine, die ihn ausführt. So wird Ihr Browsercode schwerer zu verstehen, nachzubauen und zu verändern.
Jetzt ausprobierenconst 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 forObfuskation fehlgeschlagen
Eingabe
example.jsAusgabe
// Hier erscheint das Ergebnis.
Nach der Verarbeitung können Sie den Code kopieren oder herunterladen.Über JSVeil
JSVeil ist ein JavaScript-Obfuskator, der geschützten Code in einer virtuellen Maschine (VM) ausführt. Das erschwert die Analyse und das Reverse Engineering. Die Schutzfunktionen lassen sich passend zum Projekt einstellen.
Kostenlose Version
Bis 30 KB kostenlos.
Individuelle Obfuskationsoptionen
Legen Sie fest, wie Ihr Code obfuskiert wird und wo er ausgeführt werden darf. Jede Option lässt sich einzeln aktivieren.
Eigener Seed
Der Seed steuert die Zufallsentscheidungen bei der Obfuskation. Mit identischem Quellcode, denselben Optionen, derselben Compilerversion und demselben Seed lässt sich das Ergebnis reproduzieren.
Wenn deaktiviert, erzeugt der Compiler bei jeder Obfuskation einen neuen kryptografisch sicheren Zufalls-Seed.
Globale Bezeichner umbenennen
Ändert geeignete globale Bindungsnamen, damit die ursprüngliche Codestruktur schwerer erkennbar ist.
Prüfen Sie zuvor, ob HTML, andere Skripte oder öffentliche Schnittstellen diese Namen verwenden.
Irreführende Verzweigungen
Fügt Scheinverzweigungen ein, die das Nachvollziehen des tatsächlichen Ausführungspfads erschweren.
Kann Dateigröße und Laufzeit erhöhen. Die Funktion ist optional und zunächst deaktiviert.
Umgebungsprüfung
Beschränkt die Ausführung in Automatisierungstools, jsdom, Node.js und ähnlichen Umgebungen.
Die Ausführung ist nur im Browser erlaubt.
Domain-Beschränkung
Unterstützt einzelne und mehrere Hostnamen sowie Platzhalter für Subdomains. Internationale Namen werden in ASCII-Schreibweise umgewandelt.
*.example.com schließt example.com nicht ein. Fügen Sie die Hauptdomain bei Bedarf separat hinzu.
DevTools-Erkennung
Prüft regelmäßig, ob die Entwicklertools geöffnet sind. Das Standardintervall beträgt 1.500 ms.
Bei Erkennung greifen Schutzmaßnahmen zur Laufzeit.
VM-Timeout-Prüfung
Prüft bei aktivierter Option, ob die Ausführung des geschützten Codes längere Zeit pausiert, etwa beim Debuggen. Standardmäßig zählt jede erkannte Pause von mindestens 15 Sekunden einmal. Nach zwei solchen Pausen führt die aktuelle VM den geschützten Code nicht mehr aus.
Gezählt werden lange Pausen, nicht die gesamte Laufzeit des Codes. Sie können sowohl die Mindestdauer einer Pause als auch die Anzahl bis zum Abbruch einstellen.
Konsolenausgabe deaktivieren
Deaktiviert die Konsolenausgabe, wenn das obfuskierte Skript ausgeführt wird.
Geeignet, wenn im Produktivbetrieb keine Logs benötigt werden. Die Fehlersuche wird dadurch allerdings schwieriger.
Debugging-Schutz
Löst regelmäßig debugger-Anweisungen aus, um den Debugging-Ablauf zu unterbrechen. Das Standardintervall beträgt 1.000 ms.
Häufige Fragen
Was ist JSVeil?
JSVeil ist ein JavaScript-Obfuskator, der geschützten Code in einer virtuellen Maschine (VM) ausführt. Das erschwert die Analyse und das Reverse Engineering. Die Schutzfunktionen lassen sich passend zum Projekt einstellen.
Was ist VM-basierte JavaScript-Obfuskation?
Bei der VM-basierten Obfuskation wird der zu schützende JavaScript-Code in eigenen Bytecode übersetzt. Eine mitgelieferte, in JavaScript geschriebene virtuelle Maschine führt ihn aus. Diese zusätzliche Ebene erschwert die Analyse und das Reverse Engineering des Codes.
Speichern Sie meinen Quellcode?
Niemals. Ihr Quellcode wird nur für die aktuelle Obfuskation verarbeitet und danach nicht aufbewahrt.
Ist JSVeil kostenlos?
Ja. JavaScript-Dateien bis 30 KB können Sie kostenlos obfuskieren. Probieren Sie es gern mit Ihrem eigenen Code aus.
Sie benötigen stärkere Obfuskation oder Unterstützung für größere Dateien?
Schreiben Sie uns an , was Sie für Ihr Projekt benötigen. Gemeinsam finden wir eine passende, maßgeschneiderte Lösung.