vanzy-protect
Version:
Epic Obfuscator Yeahhh
86 lines (85 loc) • 5.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StringToArrayExtr = void 0;
const cfg_1 = require("../config/cfg");
const Randomizer_1 = require("../random/Randomizer");
const comment_1 = require("./comment");
const numberObf_1 = require("./numberObf");
const obfuscateName_1 = require("./obfuscateName");
const stringObfLvl1_1 = require("./stringObfLvl1");
class StringToArrayExtr {
static init() {
this.arr = [];
this.fncName = Randomizer_1.Randomizer.INSTANCE.randIName(64);
this.arrayName = Randomizer_1.Randomizer.INSTANCE.randIName(64);
this.indexMod = ((0, cfg_1.cfg)().transforms.stringObfLevel > 1) ? Randomizer_1.Randomizer.INSTANCE.rand(-256, 256) : 0;
(0, obfuscateName_1.addObfuscated)(null, this.fncName);
(0, obfuscateName_1.addObfuscated)(null, this.arrayName);
}
static add(str) {
const at = this.arr.findIndex(i => i === str);
if (at >= 0)
return this.createCallForIndex(at);
if ((0, cfg_1.cfg)().transforms.addFakeStringsToArray) {
const randoms = Randomizer_1.Randomizer.INSTANCE.rand(0, ((0, cfg_1.cfg)().transforms.stringObfLevel - 1) * 4);
for (let i = 0; i < randoms; i++)
this.arr.push(Randomizer_1.Randomizer.INSTANCE.randIName(Randomizer_1.Randomizer.INSTANCE.rand(1, 25), 'qwertzuiopasdfghjklyxcvbnmQWERTZUIOASDHJKLYXCVBNM7894561230.-_'));
}
this.arr.push(str);
return this.createCallForIndex(this.arr.length - 1);
}
static createCallForIndex(index) {
const l = (0, cfg_1.cfg)().transforms.stringObfLevel;
const nl = Math.max(0, (0, cfg_1.cfg)().transforms.numberObfLevel - 1);
const v = index - this.indexMod;
if (l === 0 || l === 1)
return `(${this.arrayName})${(0, comment_1.comment)(3)}[${(0, numberObf_1.numberObf)(v, nl)}]`;
if (l === 2)
return `(${this.fncName})${(0, comment_1.comment)(3)}(${(0, numberObf_1.numberObf)(Randomizer_1.Randomizer.INSTANCE.rand(-800, 800), nl)},${(0, numberObf_1.numberObf)(v, nl)})`;
if (l === 3) {
const xor = Randomizer_1.Randomizer.INSTANCE.rand(1, 800);
return `(${this.fncName})${(0, comment_1.comment)(3)}(${(0, numberObf_1.numberObf)(xor, nl)},${(0, comment_1.comment)(2)}${(0, numberObf_1.numberObf)(v ^ xor, nl)})`;
}
}
static generateHeader() {
const l = (0, cfg_1.cfg)().transforms.stringObfLevel;
if (l === 0)
return (this.arr.length > 0) ? this.generateLvl1Header() : '';
if (l === 1)
return this.generateLvl1Header();
if (l === 2)
return this.generateLvl2Header();
if (l === 3)
return this.generateLvl3Header();
}
static generateLvl1Header() {
const stringifiedArr = this.arr.map(i => (0, stringObfLvl1_1.stringObfLvl1)(i)).join(',');
return `const ${(0, comment_1.comment)(1)}${this.arrayName}=${(0, comment_1.comment)(1)}[${(0, comment_1.comment)(2)}${stringifiedArr}${(0, comment_1.comment)(3)}];`;
}
static generateLvl2Header() {
const stringifiedArr = this.arr.reverse().map(i => (0, stringObfLvl1_1.stringObfLvl1)(i)).join(',');
const arrMax = this.arr.length - 1;
const a = Randomizer_1.Randomizer.INSTANCE.randIName(64);
const x = Randomizer_1.Randomizer.INSTANCE.randIName(64);
return `const ${(0, comment_1.comment)(1)}${this.arrayName}=${(0, comment_1.comment)(1)}[${(0, comment_1.comment)(2)}${stringifiedArr}${(0, comment_1.comment)(3)}];
function ${(0, comment_1.comment)(1)}${this.fncName}${(0, comment_1.comment)(2)}(${Randomizer_1.Randomizer.INSTANCE.randIName(64)},${(0, comment_1.comment)(3)}${x})${(0, comment_1.comment)(2)}{
const ${(0, comment_1.comment)(2)}${a}=(${x})+(${(0, numberObf_1.numberObf)(this.indexMod)});
return${(0, comment_1.comment)(1)}(${this.arrayName}[(${(0, comment_1.comment)(2)}${(0, numberObf_1.numberObf)(arrMax)})-(${(0, comment_1.comment)(3)}${a})]);
};`;
}
static generateLvl3Header() {
const stringifiedArr = this.arr.reverse().map(i => (0, stringObfLvl1_1.stringObfLvl1)(i)).join(',');
const arrMax = this.arr.length - 1;
const a = Randomizer_1.Randomizer.INSTANCE.randIName(64);
const b = Randomizer_1.Randomizer.INSTANCE.randIName(64);
const x = Randomizer_1.Randomizer.INSTANCE.randIName(64);
const y = Randomizer_1.Randomizer.INSTANCE.randIName(64);
return `const ${(0, comment_1.comment)(1)}${this.arrayName}=${(0, comment_1.comment)(1)}[${(0, comment_1.comment)(2)}${stringifiedArr}${(0, comment_1.comment)(3)}];
function ${(0, comment_1.comment)(1)}${this.fncName}${(0, comment_1.comment)(2)}(${x},${(0, comment_1.comment)(3)}${y})${(0, comment_1.comment)(2)}{
const ${(0, comment_1.comment)(2)}${b}=(${y})^(${(0, comment_1.comment)(3)}${x});
const ${(0, comment_1.comment)(2)}${a}=(${b})+(${(0, numberObf_1.numberObf)(this.indexMod)});
return${(0, comment_1.comment)(1)}(${this.arrayName}[(${(0, comment_1.comment)(2)}${(0, numberObf_1.numberObf)(arrMax)})-(${(0, comment_1.comment)(3)}${a})]);
};`;
}
}
exports.StringToArrayExtr = StringToArrayExtr;