|
@@ -5,6 +5,7 @@ const NoCustomNodesPreset_1 = require("../../preset-options/NoCustomNodesPreset"
|
|
const JavaScriptObfuscator_1 = require("../../JavaScriptObfuscator");
|
|
const JavaScriptObfuscator_1 = require("../../JavaScriptObfuscator");
|
|
const Node_1 = require('../Node');
|
|
const Node_1 = require('../Node');
|
|
const NodeUtils_1 = require("../../NodeUtils");
|
|
const NodeUtils_1 = require("../../NodeUtils");
|
|
|
|
+const Utils_1 = require("../../Utils");
|
|
class SelfDefendingUnicodeNode extends Node_1.Node {
|
|
class SelfDefendingUnicodeNode extends Node_1.Node {
|
|
constructor(options = {}) {
|
|
constructor(options = {}) {
|
|
super(options);
|
|
super(options);
|
|
@@ -12,11 +13,25 @@ class SelfDefendingUnicodeNode extends Node_1.Node {
|
|
this.node = this.getNodeStructure();
|
|
this.node = this.getNodeStructure();
|
|
}
|
|
}
|
|
appendNode(blockScopeNode) {
|
|
appendNode(blockScopeNode) {
|
|
- NodeUtils_1.NodeUtils.prependNode(blockScopeNode.body, this.getNode());
|
|
|
|
|
|
+ let programBodyLength = blockScopeNode.body.length, randomIndex = 0;
|
|
|
|
+ if (programBodyLength > 2) {
|
|
|
|
+ randomIndex = Utils_1.Utils.getRandomInteger(programBodyLength, programBodyLength / 2);
|
|
|
|
+ }
|
|
|
|
+ NodeUtils_1.NodeUtils.insertNodeAtIndex(blockScopeNode.body, this.getNode(), randomIndex);
|
|
}
|
|
}
|
|
getNodeStructure() {
|
|
getNodeStructure() {
|
|
let node = esprima.parse(JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(`
|
|
let node = esprima.parse(JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(`
|
|
-
|
|
|
|
|
|
+ (function () {
|
|
|
|
+ var func = function () {
|
|
|
|
+ return '\x77\x69\x6e\x64\x6f\x77';
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ if (
|
|
|
|
+ !/(\\\\\[x|u](\\w){2,4})+/.test(func.toString())
|
|
|
|
+ ) {
|
|
|
|
+ console.log('LOL');
|
|
|
|
+ }
|
|
|
|
+ })();
|
|
`, NoCustomNodesPreset_1.NO_CUSTOM_NODES_PRESET));
|
|
`, NoCustomNodesPreset_1.NO_CUSTOM_NODES_PRESET));
|
|
NodeUtils_1.NodeUtils.addXVerbatimPropertyToLiterals(node);
|
|
NodeUtils_1.NodeUtils.addXVerbatimPropertyToLiterals(node);
|
|
return NodeUtils_1.NodeUtils.getBlockScopeNodeByIndex(node);
|
|
return NodeUtils_1.NodeUtils.getBlockScopeNodeByIndex(node);
|