javascript-obfuscator cleaner & deobfuscator
Full list of commits here: https://github.com/relative/synchrony/compare/2.4.4...2.4.5
Full list of commits here: https://github.com/relative/synchrony/compare/2.4.2...2.4.3
Full list of commits here: https://github.com/relative/synchrony/compare/2.4.1...2.4.2
Full list of commits here: https://github.com/relative/synchrony/compare/2.4.0...2.4.1
new CLI options:
synchrony deobfuscate <file> Deobfuscate a file Positionals: file File to deobfuscate (include extension) [string] [required] Options: --help Show help [boolean] --version Show version number [boolean] --rename Rename symbols automatically [boolean] [default: false] --ecma-version, --esversion, --es Set ECMA version for AST parser (see acorn docs)[string] [default: "latest"] -c, --config Supply a custom deobfuscation config (see docs) [string] -o, --output Where to output deobfuscated file [string] -l, --loose Enable loose parsing [boolean] [default: false] --sourceType, --type Source type for file ('script' or 'module') [string] [default: "module"]
Example CLI config (JSON, however the CLI will require
it, meaning you can use js files and module.exports = {/*config*/}
)
{
"rename": true,
"ecmaVersion": 14,
"output": "./a.js",
"loose": true,
"sourceType": "module",
"customTransformers": [
["Simplify", {}],
["jsc-controlflow", {}],
["Simplify", {}],
["jsc-calculator", {}],
["DeadCode", {}],
["Simplify", {}]
]
}
Full list of commits here: https://github.com/relative/synchrony/compare/2.3.0...2.4.0
new CLI options:
synchrony deobfuscateDeobfuscate a file Positionals: file File to deobfuscate (include extension) [string] [required] Options: --help Show help [boolean] --version Show version number [boolean] --rename Rename symbols automatically [boolean] [default: false] --ecma-version, --esversion Set ECMA version for AST parser (see acorn docs) [string] [default: "latest"]
rename symbols automatically if enabled specify ecma version on command line
AST nodes require range
property!!!, this means if you are using the API and have it deobfuscate AST you must have your parser emit range
property on each node
remove dead variables (not read/wrote anywhere) replace variables that are only read in functions (fixes terser's object unpacking to variable) unpack arrays that start with a "null" element demangle minified functions so that they match stringdecoder's required schemas
fix control flow deflattening
Full Changelog: https://github.com/relative/synchrony/compare/2.1.4...2.1.5
let x = true ? 'X' : 'Y'
// becomes
let x = 'X'
if(false)
, while(false)
)