import Modification from '../../modification'; import * as Shift from 'shift-ast'; export default class StringDecoder extends Modification { private encodingFunctionProps?; /** * Creates a new modification. * @param ast The AST. */ constructor(ast: Shift.Script | Shift.Module); /** * Executes the modification. */ execute(): void; /** * Looks for a JS-Obfuscator XOR string encoding function. */ private findStringEncodingFunction; /** * Undoes various string operations. */ private undoStringOperations; /** * Returns whether a node is an obfuscated reversed string. * @param node The AST node. * @returns Whether. */ private isReversedString; /** * Returns whether a node is a string broken down into char codes. * @param node The AST node. * @returns Whether. */ private isCharCodesString; /** * Returns whether a node is the JS-Obfuscator XOR string encoding function. * @param node The AST node. * @returns Whether. */ private isXorStringEncodingFunction; /** * Returns whether a node is a call of the string encoding function. * @param node The AST node. * @returns Whether. */ private isStringEncodingFunctionCall; }