UNPKG

vanzy-protect

Version:

Epic Obfuscator Yeahhh

120 lines (119 loc) 5.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.E_FNC_NAME = exports.R_FNC_NAME = exports.B_FNC_NAME = exports.A_FNC_NAME = exports.CONFIG_PATH = void 0; const commander = require("commander"); const fs = require("fs"); const espree = require("espree"); const kolorist = require("kolorist"); const cfg_1 = require("./config/cfg"); const error_1 = require("./log/error"); const traverse_1 = require("./traverse/traverse"); const obfuscateName_1 = require("./obfuscate/obfuscateName"); const checkVersion_1 = require("./program/checkVersion"); const constants_1 = require("./program/constants"); const applyLines_1 = require("./obfuscate/applyLines"); const applyArt_1 = require("./obfuscate/applyArt"); const Randomizer_1 = require("./random/Randomizer"); const generateProxyFunction_1 = require("./obfuscate/generateProxyFunction"); const StringToArrayExtr_1 = require("./obfuscate/StringToArrayExtr"); const program = new commander.Command(); program .option('-i, --input <file>', 'Input file') .option('-o, --output <file>', 'Output file') .option('-c, --config <file>', 'Config file') .option('-s, --logseed', 'Print out the seed at the end') .option('-n, --noupdate', 'Don\'t check for updates') .option('-h, --help', 'Get help') .option('-v, --version', 'Get the version'); program.helpOption(false); const opts = program.parse().opts(); const { input, output, config, help, version, logseed, noupdate } = opts; if (help) { console.log(constants_1.HELP_TEXT); process.exit(0); } if (version) { console.log(constants_1.VERSION); process.exit(0); } if (!input) { (0, error_1.error)('You must specify an input', true); process.exit(1); } if (!output) { (0, error_1.error)('You must specify an output', true); process.exit(1); } if (!config) { (0, error_1.error)('You must specify a config file', true); process.exit(1); } const vcheckPromise = noupdate ? null : (0, checkVersion_1.checkVersion)(); exports.CONFIG_PATH = config; const string = String(fs.readFileSync(input)); const ast = espree.parse(string, { ecmaVersion: (0, cfg_1.cfg)().input.esVersion }); new Randomizer_1.Randomizer((0, cfg_1.cfg)().input.seed); console.log(kolorist.white(` ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⣀⡴⢧⣀⠀⠀⣀⣠⠤⠤⠤⠤⣄⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠘⠏⢀⡴⠊⠁⠀⠀⠀⠀⠀⠀⠈⠙⠦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⣰⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢶⣶⣒⣶⠦⣤⣀⠀⠀ ⠀⠀⠀⠀⠀⠀⢀⣰⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣟⠲⡌⠙⢦⠈⢧⠀ ⠀⠀⠀⣠⢴⡾⢟⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⡴⢃⡠⠋⣠⠋⠀ ⠐⠀⠞⣱⠋⢰⠁⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⠤⢖⣋⡥⢖⣫⠔⠋⠀⠀⠀ ⠈⠠⡀⠹⢤⣈⣙⠚⠶⠤⠤⠤⠴⠶⣒⣒⣚⣩⠭⢵⣒⣻⠭⢖⠏⠁⢀⣀⠀⠀⠀⠀ ⠠⠀⠈⠓⠒⠦⠭⠭⠭⣭⠭⠭⠭⠭⠿⠓⠒⠛⠉⠉⠀⠀⣠⠏⠀⠀⠘⠞⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⢤⣀⠀⠀⠀⠀⠀⠀⣀⡤⠞⠁⠀⣰⣆⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠘⠿⠀⠀⠀⠀⠀⠈⠉⠙⠒⠒⠛⠉⠁⠀⠀⠀⠉⢳⡞⠉⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ` + kolorist.green(input) + '\nDONE ENCRYPT WITH VANZY-PROTECT!! \n' + kolorist.yellow(constants_1.VERSION))); const t = Date.now(); StringToArrayExtr_1.StringToArrayExtr.init(); var aFnName = Randomizer_1.Randomizer.INSTANCE.randIName(64); var bFnName = Randomizer_1.Randomizer.INSTANCE.randIName(64); var rFnName = Randomizer_1.Randomizer.INSTANCE.randIName(64); var eFnName = Randomizer_1.Randomizer.INSTANCE.randIName(64); const A_FNC_NAME = () => aFnName; exports.A_FNC_NAME = A_FNC_NAME; const B_FNC_NAME = () => bFnName; exports.B_FNC_NAME = B_FNC_NAME; const R_FNC_NAME = () => rFnName; exports.R_FNC_NAME = R_FNC_NAME; const E_FNC_NAME = () => eFnName; exports.E_FNC_NAME = E_FNC_NAME; (0, obfuscateName_1.updateRedo)(); (0, obfuscateName_1.addObfuscated)('Array', rFnName); (0, obfuscateName_1.addObfuscated)('RegExp', eFnName); const headerFncName1 = Randomizer_1.Randomizer.INSTANCE.randIName(64); const headerFncName2 = Randomizer_1.Randomizer.INSTANCE.randIName(64); (0, obfuscateName_1.addObfuscated)(null, headerFncName1); (0, obfuscateName_1.addObfuscated)(null, headerFncName2); const proxyFnc = (0, generateProxyFunction_1.generateProxyFunction)((0, exports.A_FNC_NAME)(), headerFncName1, headerFncName2); const obf = (0, traverse_1.traverse)(ast.body); const mapped = obfuscateName_1.REDONE_PAIRS.map(([og, n]) => `const ${n}=${og}`).join(';'); const result = ` ${proxyFnc};const ${(0, exports.B_FNC_NAME)()}=Boolean;${StringToArrayExtr_1.StringToArrayExtr.generateHeader()} ${mapped}; const ${rFnName} = Array;const ${eFnName}=RegExp; ${obf}; `; var finalResult = result; if ((0, cfg_1.cfg)().format.removeEmptyLines) while (finalResult.includes('\n\n')) finalResult = finalResult.replaceAll('\n\n', '\n'); if ((0, cfg_1.cfg)().format.shrink) finalResult = finalResult.replaceAll('\n', ';'); finalResult = (0, applyLines_1.applyLines)(finalResult); finalResult = (0, applyArt_1.applyArt)(finalResult); console.log(kolorist.white('Done in ' + kolorist.magenta((Date.now() - t) + ' ms'))); if (logseed) { console.log('\tObfuscation seed is ' + kolorist.green((0, cfg_1.cfg)().input.seed)); } fs.writeFileSync(output, finalResult); (async () => { if (noupdate) return; var { currentVersion, latestVersion } = await vcheckPromise; currentVersion = currentVersion.slice(1); if (currentVersion !== latestVersion) (0, checkVersion_1.printVersionInfo)([currentVersion, latestVersion]); })();