LiteralObfuscator.js 1.2 KB

123456789101112131415161718192021222324252627282930313233
  1. "use strict";
  2. const escodegen = require('escodegen');
  3. const NodeObfuscator_1 = require('./NodeObfuscator');
  4. const NodeUtils_1 = require("../NodeUtils");
  5. class LiteralObfuscator extends NodeObfuscator_1.NodeObfuscator {
  6. obfuscateNode(literalNode, parentNode) {
  7. if (NodeUtils_1.NodeUtils.isPropertyNode(parentNode) && parentNode.key === literalNode) {
  8. return;
  9. }
  10. if (literalNode['x-verbatim-property']) {
  11. return;
  12. }
  13. let content;
  14. switch (typeof literalNode.value) {
  15. case 'boolean':
  16. content = this.replaceLiteralBooleanByJSFuck(literalNode.value);
  17. break;
  18. case 'number':
  19. content = this.replaceLiteralNumberByHexadecimalValue(literalNode.value);
  20. break;
  21. case 'string':
  22. content = this.replaceLiteralStringByUnicodeArrayTranslatorCall(literalNode.value);
  23. break;
  24. default:
  25. return;
  26. }
  27. literalNode['x-verbatim-property'] = {
  28. content: content,
  29. precedence: escodegen.Precedence.Primary
  30. };
  31. }
  32. }
  33. exports.LiteralObfuscator = LiteralObfuscator;