proof of concept for extracting the magic strings needed to generate the mask and aa-boot
npm i
node ani-extract.js PATH_TO_OBFUSCATED.js
look in the inspector network tab and search for the bootstrap call, then the file should be the second one in the stacktrace, i.e. the one after the one that calls window.fetch.
in this case /all/mk/_app/immutable/chunks/DnMm_so9.js
This project uses Node.js Single Executable Applications (SEA) to produce a
standalone executable. The resulting binary does not require Node.js,
npm, or node_modules to be installed on the target machine.
SEA binaries are platform-specific. Build separately for each target platform.
- Node.js 22.x
- npm
Install dependencies:
npm installVerify Node:
node --versionThe Node version used to generate the SEA blob must match the Node executable being injected.
First bundle the application:
npm run bundleThis should produce:
ani-extract-bundle.js
Generate the SEA blob:
node --experimental-sea-config sea-config.jsonThis produces:
sea-prep.blob
Copy the Node executable:
cp "$(command -v node)" ani-extractCopy-Item (Get-Command node).Source ani-extract.exeInject the blob:
npx postject ani-extract \
NODE_SEA_BLOB \
sea-prep.blob \
--sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2npx postject ani-extract \
NODE_SEA_BLOB \
sea-prep.blob \
--sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2npx postject ani-extract.exe `
NODE_SEA_BLOB `
sea-prep.blob `
--sentinel-fuse NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2Linux/macOS:
./ani-extract input.jsWindows:
.\ani-extract.exe input.jsThe executable should behave the same as:
node ani-extract-bundle.js input.jsThe final executable is:
ani-extract
or:
ani-extract.exe
It can be distributed without:
- Node.js
- npm
- babel
- package installation
- source code