Mit UglifyJs auf die ganze Node-Projekt?
Brauche ich, um zu verschleiern meine Quellcode so gut wie möglich und so habe ich beschlossen, uglifyjs2.. ich habe Jetzt die Projekt Struktur mit verschachtelten Verzeichnissen, wie kann ich es durch uglifyjs2 zu tun, das ganze Projekt anstatt Sie alle input-Dateien?
Ich hätte nichts dagegen, wenn es minified das gesamte Projekt in einer einzigen Datei oder etwas
- Warum nicht schreiben Sie ein shell-Skript, um eine Schleife durch alle Dateien und rufen Sie Ihren obfuscater für jeden?
- Ich wollte kombinieren Sie alle in eine einzelne Datei.. Auch verschleiernden anders brechen die Referenzen jeder Datei zu jedem anderen denke ich, da die Namen der Dateien ändern
- Wie soll man denn Knoten funktionieren, wenn Sie haben, setzen alle Dateien zusammen? (
require('../mylib/lib1')
) - Ich hatte gehofft, verunstalten/verkleinern-Werkzeug würde damit umgehen
- Nein, es wird nicht beheben. Vielleicht möchten Sie sich bei der Benutzung der Grunt mit einer verunstalten Aufgabe für javascript-Dateien.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich getan habe, etwas sehr ähnlich wie diese in einem Projekt an dem ich gearbeitet habe. Sie haben zwei Optionen:
Lassen Sie die Dateien in Ihre Verzeichnis-Struktur.
Dies ist bei weitem die einfachere Variante, bietet aber eine viel niedrigere Stufe der Verschleierung, weil sich jemand interessiert genug, in Ihrem code, der im Grunde eine Kopie der logischen Organisation von Dateien.
Kann ein Angreifer einfach pretty-print alle Dateien, und benennen Sie den verborgenen Namen der Variablen in jeder Datei, bis Sie verstehen, was Los ist.
Um dies zu tun, verwenden Sie
fs.readdir
undfs.stat
rekursiv Durchlaufen, Ordner, Lesen Sie sich in jedem .js-Datei und Ausgabe der entstellten code.Kompilieren Sie alles in eine einzelne JS Datei.
Dies ist für Sie viel schwieriger zu implementieren, aber macht das Leben schwieriger für einen Angreifer, da Sie nicht mehr den nutzen für Ihr Projekt die Organisation.
Ihr Hauptproblem ist die Vereinbarkeit Ihrer
require
Anrufe mit Dateien, die nicht mehr existieren (da ist jetzt alles in der gleichen Datei).Ich habe dies mithilfe Verunstalten zur Durchführung einer statischen Analyse von mein source-code durch die Analyse der AST für Anrufe zu
require
. Ich lud den Quellcode der gewünschten Datei und wiederholt.Einmal der gesamte code geladen wurde, ersetzte ich die
require
Anrufe mit Anrufe an eine benutzerdefinierte Funktion, wickelte jede Datei der source-code in eine Funktion emuliert wie Knoten Modul-system funktioniert, und dann entstellt alles-und es kompiliert in einer einzigen Datei.Meine benutzerdefinierte erfordern-Funktion tut, was die meisten von Knoten erfordern, hat der Ausnahme, dass statt der Suche die Scheibe für ein Modul gesucht, die wrapper-Funktionen.
Leider kann ich nicht wirklich teilen-code für #2, da war es Teil eines proprietären Projekt, aber das wesentliche ist:
UglifyJS.parse
.Verwenden Sie die
TreeWalker
zu besuchen jeden Knoten des AST und überprüfen Sie, obAls ich haben gerade eine riesige reinen Nodejs Projekt 80+ Dateien hatte ich das gleiche problem wie OP. Ich brauchte wenigstens einen minimalen Schutz für meine harte Arbeit, aber es scheint, dass diese sehr grundlegenden Bedarf wurde nicht gedeckt durch die NPMjs OS-community. Salz hinzufügen, um Verletzungen der JXCore Paket Verschlüsselungssystem geknackt wurde Letzte Woche in ein paar Stunden zurück also zur Verschleierung...
So, ich habe die komplette Lösung verarbeitet Datei Zusammenführen, uglifying. Sie haben die Möglichkeit des Ausscheidens aus angegebenen Dateien/Ordner, als auch durch die Zusammenlegung. Diese Dateien werden dann kopiert, um den neuen Speicherort der zusammengeführten Datei und Verweise auf Sie umgeschrieben werden auto.
NPMjs link von Knoten-uglifier
Github-repo von der Knoten-uglifier
PS: ich wäre froh, wenn Menschen dazu beitragen würde, es noch besser zu machen. Dies ist ein Krieg zwischen Dieben und hart arbeitende Programmierer wie dich. Können unsere Kräfte zusammenschließen, erhöhen Sie den Schmerz des reverse engineering!
Hatte ich das selbe Bedürfnis -, für das ich
node-optimize
undgrunt-node-optimize
.https://www.npmjs.com/package/grunt-node-optimize
node-optimize
in einem Schluck Bibliothek. Wenn Sie das tun -, werde ich eine Notiz darüber innode-optimize
's readme-Datei.Ist dies nicht nativ unterstützt, indem uglifyjs2.
Erwägen Sie die Verwendung webpack zu Verpacken, die Ihre gesamte app in einem einzigen minified .js-Datei, ohne
node_modules
:http://jlongster.com/Backend-Apps-with-Webpack--Part-I