1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- "use strict";
- const AppendState_1 = require('./enums/AppendState');
- const FunctionDeclarationObfuscator_1 = require('./node-obfuscators/FunctionDeclarationObfuscator');
- const FunctionObfuscator_1 = require('./node-obfuscators/FunctionObfuscator');
- const LiteralObfuscator_1 = require('./node-obfuscators/LiteralObfuscator');
- const MemberExpressionObfuscator_1 = require('./node-obfuscators/MemberExpressionObfuscator');
- const MethodDefinitionObfuscator_1 = require('./node-obfuscators/MethodDefinitionObfuscator');
- const ObjectExpressionObfuscator_1 = require('./node-obfuscators/ObjectExpressionObfuscator');
- const UnicodeArrayNode_1 = require('./nodes/UnicodeArrayNode');
- const UnicodeArrayNodesGroup_1 = require('./node-groups/UnicodeArrayNodesGroup');
- const Utils_1 = require('./Utils');
- const VariableDeclarationObfuscator_1 = require('./node-obfuscators/VariableDeclarationObfuscator');
- let estraverse = require('estraverse');
- class Obfuscator {
- constructor(options) {
- this.nodes = new Map();
- this.nodeObfuscators = new Map([
- ['ClassDeclaration', [FunctionDeclarationObfuscator_1.FunctionDeclarationObfuscator]],
- ['FunctionDeclaration', [
- FunctionDeclarationObfuscator_1.FunctionDeclarationObfuscator,
- FunctionObfuscator_1.FunctionObfuscator
- ]],
- ['ArrowFunctionExpression', [FunctionObfuscator_1.FunctionObfuscator]],
- ['FunctionExpression', [FunctionObfuscator_1.FunctionObfuscator]],
- ['MethodDefinition', [MethodDefinitionObfuscator_1.MethodDefinitionObfuscator]],
- ['VariableDeclaration', [VariableDeclarationObfuscator_1.VariableDeclarationObfuscator]],
- ['ObjectExpression', [ObjectExpressionObfuscator_1.ObjectExpressionObfuscator]],
- ['MemberExpression', [MemberExpressionObfuscator_1.MemberExpressionObfuscator]],
- ['Literal', [LiteralObfuscator_1.LiteralObfuscator]]
- ]);
- this.options = {
- rotateUnicodeArray: true
- };
- Object.assign(this.options, options);
- }
- obfuscateNode(node) {
- if (this.options['rotateUnicodeArray']) {
- this.setNodesGroup('unicodeArrayNodesGroup', new UnicodeArrayNodesGroup_1.UnicodeArrayNodesGroup(node));
- }
- else {
- this.setNode('unicodeArrayNode', new UnicodeArrayNode_1.UnicodeArrayNode(node, Utils_1.Utils.getRandomVariableName(UnicodeArrayNode_1.UnicodeArrayNode.UNICODE_ARRAY_RANDOM_LENGTH)));
- }
- this.beforeObfuscation(node);
- estraverse.replace(node, {
- leave: (node, parent) => this.nodeController(node, parent)
- });
- this.afterObfuscation(node);
- }
- setNode(nodeName, node) {
- this.nodes.set(nodeName, node);
- }
- setNodesGroup(groupName, nodesGroup) {
- let nodes = nodesGroup.getNodes();
- nodes.forEach((node, key) => {
- this.nodes.set(key, node);
- });
- }
- afterObfuscation(node) {
- this.nodes.forEach((node) => {
- if (node.getAppendState() === AppendState_1.AppendState.AfterObfuscation) {
- node.appendNode();
- }
- });
- }
- beforeObfuscation(node) {
- this.nodes.forEach((node) => {
- if (node.getAppendState() === AppendState_1.AppendState.BeforeObfuscation) {
- node.appendNode();
- }
- });
- }
- ;
- nodeController(node, parent) {
- switch (node.type) {
- default:
- this.initializeNodeObfuscators(node, parent);
- }
- }
- initializeNodeObfuscators(node, parent) {
- if (!this.nodeObfuscators.has(node.type)) {
- return;
- }
- this.nodeObfuscators.get(node.type).forEach((obfuscator) => {
- new obfuscator(this.nodes).obfuscateNode(node, parent);
- });
- }
- }
- exports.Obfuscator = Obfuscator;
- //# sourceMappingURL=Obfuscator.js.map
|