VariableDeclarationObfuscator.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. "use strict";
  2. const NodeObfuscator_1 = require('./NodeObfuscator');
  3. const Utils_1 = require('../Utils');
  4. let estraverse = require('estraverse');
  5. class VariableDeclarationObfuscator extends NodeObfuscator_1.NodeObfuscator {
  6. constructor(...args) {
  7. super(...args);
  8. this.variableName = new Map();
  9. }
  10. obfuscateNode(variableDeclarationNode, parentNode) {
  11. if (parentNode.type === 'Program') {
  12. return;
  13. }
  14. this.replaceVariableName(variableDeclarationNode);
  15. this.replaceVariableCalls(parentNode);
  16. }
  17. replaceVariableName(variableDeclarationNode) {
  18. variableDeclarationNode.declarations.forEach((declarationNode) => {
  19. estraverse.replace(declarationNode, {
  20. leave: (node) => {
  21. if (node.type !== 'VariableDeclarator') {
  22. return;
  23. }
  24. estraverse.replace(node.id, {
  25. leave: (node) => {
  26. this.variableName.set(node.name, Utils_1.Utils.getRandomVariableName());
  27. node.name = this.variableName.get(node.name);
  28. }
  29. });
  30. }
  31. });
  32. });
  33. }
  34. replaceVariableCalls(variableParentNode) {
  35. estraverse.replace(variableParentNode, {
  36. leave: (node, parentNode) => {
  37. this.replaceNodeIdentifierByNewValue(node, parentNode, this.variableName);
  38. }
  39. });
  40. }
  41. }
  42. exports.VariableDeclarationObfuscator = VariableDeclarationObfuscator;
  43. //# sourceMappingURL=VariableDeclarationObfuscator.js.map