NodeObfuscator.js 1.4 KB

123456789101112131415161718192021222324252627282930313233
  1. "use strict";
  2. const NodeUtils_1 = require("../NodeUtils");
  3. const Utils_1 = require('../Utils');
  4. class NodeObfuscator {
  5. constructor(nodes) {
  6. this.nodes = nodes;
  7. }
  8. replaceNodeIdentifierByNewValue(node, parentNode, namesMap) {
  9. if (NodeUtils_1.NodeUtils.isIdentifierNode(node) && namesMap.has(node.name)) {
  10. if ((NodeUtils_1.NodeUtils.isPropertyNode(parentNode) && parentNode.key === node) ||
  11. (NodeUtils_1.NodeUtils.isMemberExpressionNode(parentNode) && parentNode.computed === false && parentNode.property === node)) {
  12. return;
  13. }
  14. node.name = namesMap.get(node.name);
  15. }
  16. }
  17. replaceLiteralNumberByHexadecimalValue(nodeValue) {
  18. const prefix = '0x';
  19. return `${prefix}${Utils_1.Utils.decToHex(nodeValue)}`;
  20. }
  21. replaceLiteralStringByArrayElement(nodeValue) {
  22. let value = Utils_1.Utils.stringToUnicode(nodeValue), unicodeArray = this.nodes.get('unicodeArrayNode').getNodeData(), sameIndex = unicodeArray.indexOf(value), index;
  23. if (sameIndex < 0) {
  24. index = unicodeArray.length;
  25. unicodeArray.push(Utils_1.Utils.stringToUnicode(nodeValue));
  26. }
  27. else {
  28. index = sameIndex;
  29. }
  30. return `${this.nodes.get('unicodeArrayNode').getNodeIdentifier()}[${index}]`;
  31. }
  32. }
  33. exports.NodeObfuscator = NodeObfuscator;