vanzy-protect
Version:
Epic Obfuscator Yeahhh
133 lines (122 loc) • 2.16 kB
text/typescript
import { cfg } from '../config/cfg'
import { Randomizer } from '../random/Randomizer'
const map: { [k: string]: string } = {}
const _map: string[] = []
const defaults = [
'await',
'break',
'case',
'catch',
'class',
'const',
'continue',
'debugger',
'default',
'delete',
'do',
'else',
'enum',
'export',
'extends',
'false',
'finally',
'for',
'function',
'if',
'implements',
'import',
'in',
'instanceof',
'interface',
'let',
'new',
'null',
'package',
'private',
'protected',
'public',
'return',
'super',
'switch',
'static',
'this',
'throw',
'try',
'true',
'typeof',
'var',
'void',
'while',
'with',
'yield',
'__dirname',
'__filename',
'clearImmediate',
'clearInterval',
'clearTimeout',
'Event',
'EventTarget',
'exports',
'global',
'MessageChannel',
'MessageEvent',
'MessagePort',
'module',
'process',
'queueMicrotask',
'setImmediate',
'setInterval',
'setTimeout',
'TextDecoder',
'TextEncoder',
'URL',
'URLSearchParams',
'WebAssembly'
]
const REDO = [
'String',
'Object',
'Number',
'JSON',
'Math',
'Date',
'console',
'Buffer'
]
export function updateRedo() {
if (cfg().transforms.webMode) {
REDO.push('document')
REDO.push('localStorage')
REDO.push('window')
REDO.push('fetch')
} else {
REDO.push('require')
}
}
export const REDONE_PAIRS: string[][] = []
var ranDefaults = false
export function addObfuscated(ogName: string, newName: string) {
map[ogName] = newName
_map.push(newName)
}
export function _obfuscateName(name: string, bfRD = false) {
if (!ranDefaults && !bfRD) {
// lets not obfuscate console and shit
defaults.forEach(i => map[i] = i)
cfg().transforms.ignore.forEach(i => map[i] = i)
REDO.forEach((i) => REDONE_PAIRS.push([ i, _obfuscateName(i, true) ]))
ranDefaults = true
}
if (map[name]) return map[name]
var rs = Randomizer.INSTANCE.randIName(64)
while (_map.includes(rs)) rs = Randomizer.INSTANCE.randIName(64)
_map.push(rs)
map[name] = rs
return rs
}
const DEBUG_MODE = false
export function obfuscateName(name: string) {
const d = DEBUG_MODE ? `_obf_${name}_sus` : _obfuscateName(name)
// console.log(name, d)
return d
}