diff --git a/dist/src/Utils.js b/dist/src/Utils.js index 4d412319..6ba8bf8d 100644 --- a/dist/src/Utils.js +++ b/dist/src/Utils.js @@ -21,6 +21,9 @@ class Utils { } return newArray; } + static btoa(string) { + return new Buffer(encodeURI(string)).toString('base64'); + } static decToHex(dec) { const decToHexSliceValue = -6, exponent = 6, radix = 16; return (dec + Math.pow(radix, exponent)) diff --git a/dist/src/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNode.js b/dist/src/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNode.js index 9f2b7137..141c08ec 100644 --- a/dist/src/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNode.js +++ b/dist/src/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNode.js @@ -32,7 +32,7 @@ class UnicodeArrayDecodeNode extends Node_1.Node { code = ` var ${environmentName} = function(){return ${Utils_1.Utils.stringToUnicode('dev')};}; - Function(${Utils_1.Utils.stringToUnicode(`return/\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}/`)})()[${Utils_1.Utils.stringToUnicode('test')}](${environmentName}[${Utils_1.Utils.stringToUnicode('toString')}]()) !== ${JSFuck_1.JSFuck.True} && !${this.unicodeArrayName}++ ? []['filter']['constructor'](${Utils_1.Utils.stringToJSFuck('while')} + '(${JSFuck_1.JSFuck.True}){}')() : Function(${Utils_1.Utils.stringToUnicode('a')}, ${Utils_1.Utils.stringToUnicode('a()')})(${forLoopFunctionName}) ? []['filter']['constructor'](${Utils_1.Utils.stringToJSFuck('while')} + '(${JSFuck_1.JSFuck.False}){}')() : []['filter']['constructor'](${Utils_1.Utils.stringToJSFuck('while')} + '(${JSFuck_1.JSFuck.False}){}')(); + Function(${Utils_1.Utils.stringToUnicode(`return/\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}/`)})()[${Utils_1.Utils.stringToUnicode('test')}](${environmentName}[${Utils_1.Utils.stringToUnicode('toString')}]()) !== ${JSFuck_1.JSFuck.True} && !${this.unicodeArrayName}++ ? []['filter']['constructor'](${Utils_1.Utils.stringToJSFuck('while')} + '(${JSFuck_1.JSFuck.True}){}')() : Function(${Utils_1.Utils.stringToUnicode('a')}, atob(${Utils_1.Utils.stringToUnicode(Utils_1.Utils.btoa('a()'))}))(${forLoopFunctionName}) ? []['filter']['constructor'](${Utils_1.Utils.stringToJSFuck('while')} + '(${JSFuck_1.JSFuck.False}){}')() : []['filter']['constructor'](${Utils_1.Utils.stringToJSFuck('while')} + '(${JSFuck_1.JSFuck.False}){}')(); `; } else { diff --git a/dist/src/node-obfuscators/NodeObfuscator.js b/dist/src/node-obfuscators/NodeObfuscator.js index b7328681..9c858592 100644 --- a/dist/src/node-obfuscators/NodeObfuscator.js +++ b/dist/src/node-obfuscators/NodeObfuscator.js @@ -37,7 +37,7 @@ class NodeObfuscator { replaceLiteralValueByUnicodeValue(nodeValue) { let value = nodeValue, replaceByUnicodeArrayFlag = Math.random() <= this.options['unicodeArrayThreshold']; if (this.options['encodeUnicodeLiterals'] && replaceByUnicodeArrayFlag) { - value = new Buffer(encodeURI(value)).toString('base64'); + value = Utils_1.Utils.btoa(value); } value = Utils_1.Utils.stringToUnicode(value); if (!this.options['unicodeArray'] || !replaceByUnicodeArrayFlag) { diff --git a/src/Utils.ts b/src/Utils.ts index c04d53ce..da6166e1 100644 --- a/src/Utils.ts +++ b/src/Utils.ts @@ -42,6 +42,13 @@ export class Utils { return newArray; } + /** + * @param string + */ + public static btoa (string: string): string { + return new Buffer(encodeURI(string)).toString('base64'); + } + /** * @param dec * @returns {string} diff --git a/src/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNode.ts b/src/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNode.ts index 65d6b49c..33c2ae91 100644 --- a/src/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNode.ts +++ b/src/custom-nodes/unicode-array-nodes/UnicodeArrayDecodeNode.ts @@ -85,7 +85,7 @@ export class UnicodeArrayDecodeNode extends Node { code = ` var ${environmentName} = function(){return ${Utils.stringToUnicode('dev')};}; - Function(${Utils.stringToUnicode(`return/\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}/`)})()[${Utils.stringToUnicode('test')}](${environmentName}[${Utils.stringToUnicode('toString')}]()) !== ${JSFuck.True} && !${this.unicodeArrayName}++ ? []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(${JSFuck.True}){}')() : Function(${Utils.stringToUnicode('a')}, ${Utils.stringToUnicode('a()')})(${forLoopFunctionName}) ? []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(${JSFuck.False}){}')() : []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(${JSFuck.False}){}')(); + Function(${Utils.stringToUnicode(`return/\\w+ *\\(\\) *{\\w+ *['|"].+['|"];? *}/`)})()[${Utils.stringToUnicode('test')}](${environmentName}[${Utils.stringToUnicode('toString')}]()) !== ${JSFuck.True} && !${this.unicodeArrayName}++ ? []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(${JSFuck.True}){}')() : Function(${Utils.stringToUnicode('a')}, atob(${Utils.stringToUnicode(Utils.btoa('a()'))}))(${forLoopFunctionName}) ? []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(${JSFuck.False}){}')() : []['filter']['constructor'](${Utils.stringToJSFuck('while')} + '(${JSFuck.False}){}')(); `; } else { code = `${forLoopFunctionName}();`; diff --git a/src/node-obfuscators/NodeObfuscator.ts b/src/node-obfuscators/NodeObfuscator.ts index a3d728ce..402fab4c 100644 --- a/src/node-obfuscators/NodeObfuscator.ts +++ b/src/node-obfuscators/NodeObfuscator.ts @@ -101,7 +101,7 @@ export abstract class NodeObfuscator implements INodeObfuscator { replaceByUnicodeArrayFlag: boolean = Math.random() <= this.options['unicodeArrayThreshold']; if (this.options['encodeUnicodeLiterals'] && replaceByUnicodeArrayFlag) { - value = new Buffer(encodeURI(value)).toString('base64'); + value = Utils.btoa(value); } value = Utils.stringToUnicode(value);