
Dies ist ein Tool, das zum Auspacken von JavaScript -Bundles von Webpack und Browserify erstellt wurde.
Dies war ein Forschungsprojekt, das nicht mehr aufrechterhalten wird . Ich habe mir gebaut, um zu verstehen, wie JavaScript -Bündel gestürzt werden. Es arbeitet die meiste Zeit in einer Labrationsumgebung, scheitert jedoch häufig in JavaScript-Bündeln der realen Welt. Es ist eine Weile her, dass ich an diesem Projekt gearbeitet habe. Wenn Sie also auf Probleme stoßen, kann ich Ihnen möglicherweise nicht wirklich helfen.
Die Gründe variieren, aber dieses Tool wurde ursprünglich entwickelt, um mir bei einem Reverse Engineering -Projekt zu helfen. Unnötig zu erwähnen, dass das Sieben von Minimified -Bündeln versucht, herauszufinden, wie ein Dienst funktioniert, macht keinen Spaß und ist viel einfacher, wenn dieses Bundle in Dateien unterteilt ist und diese Dateien semantische Namen haben.
npm i -g debundle
$ debundle
Usage: debundle [input file] {OPTIONS}
Options:
--input, -i Bundle to debundle
--output, -o Directory to debundle code into.
--config, -c Configuration file
$ curl https://raw.githubusercontent.com/1egoman/debundle/master/test_bundles/browserify/bundle.js > bundle.js
$ curl https://raw.githubusercontent.com/1egoman/debundle/master/test_bundles/browserify/debundle.config.json > debundle.config.json
$ cat debundle.config.json
{
" type " : " browserify " ,
" knownPaths " : {}
}
$ debundle -i bundle.js -o dist/ -c debundle.config.json
$ tree dist/
dist/
├── index.js
└── node_modules
├── number
│ └── index.js
└── uuid
├── index.js
├── lib
│ ├── bytesToUuid.js
│ └── rng.js
├── v1.js
└── v4.js
4 directories, 7 files {
"type": "browserify",
"entryPoint": 1,
"knownPaths": {}
}
(Ersetzen Sie die obige browserify durch ein einfaches Webpack -Bundle, um die obige Konfiguration durch webpack zu ersetzen.)
Eine Konfiguration kann eine Reihe von Flags haben - sie sind in docs.md dokumentiert.
Nein, gibt es ein Haufen Metadaten, die beim Bündeln verloren gehen:
package.json -Einstellungen für jedes node_module und das Stammpaket.1.js ) benannt sind, sofern nicht manuell überschrieben.Nicht offiziell. Wenn ein Bundle jedoch das gleiche Typ -Modul -Layout für Browserify oder Webpack hat, kann es möglich sein, die Option "Moduleaste -Konfiguration" festzulegen, um auf den Speicherort der Module zu verweisen.
npm install aus - das sollte es sein../src/index.js (so leiten Sie es!)test_bundles/ . Ein Skript, test_bundles/run_test.sh kann den Debundler gegen ein bestimmtes Bündel ausführen und versuchen, ihn in dist/ zu entlarven. (CI wird im Rahmen von Tests alle Bündel in diesem Ordner debütieren.)npm testEinige Unternehmen geben in ihren Nutzungsbedingungen an, dass ihr Code nicht "umgekehrt konstruiert" werden kann. Das Debundling kann definitiv (je nachdem, wie Sie den Code verwenden) unter diesen Dach fallen. Verstehen Sie, was Sie tun, damit Sie keine Vereinbarungen brechen?