SelfDefendingUnicodeNode.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import * as ESTree from 'estree';
  2. import { TNodeWithBlockStatement } from '../../types/TNodeWithBlockStatement';
  3. import { AppendState } from '../../enums/AppendState';
  4. import { NO_CUSTOM_NODES_PRESET } from '../../preset-options/NoCustomNodesPreset';
  5. import { SelfDefendingTemplate } from '../../templates/custom-nodes/self-defending-nodes/self-defending-unicode-node/SelfDefendingTemplate';
  6. import { AbstractCustomNode } from '../AbstractCustomNode';
  7. import { JavaScriptObfuscator } from '../../JavaScriptObfuscator';
  8. import { NodeUtils } from '../../NodeUtils';
  9. import { HiddenNodeAppender } from '../../hidden-node-appender/HiddenNodeAppender';
  10. export class SelfDefendingUnicodeNode extends AbstractCustomNode {
  11. /**
  12. * @type {AppendState}
  13. */
  14. protected appendState: AppendState = AppendState.AfterObfuscation;
  15. /**
  16. * @param blockScopeNode
  17. */
  18. public appendNode (blockScopeNode: TNodeWithBlockStatement): void {
  19. HiddenNodeAppender.appendNode(
  20. blockScopeNode.body,
  21. this.getNode(),
  22. HiddenNodeAppender.getIndexByThreshold(blockScopeNode.body.length)
  23. );
  24. }
  25. /**
  26. * @returns {ESTree.Node}
  27. */
  28. protected getNodeStructure (): ESTree.Node {
  29. return NodeUtils.convertCodeToStructure(
  30. JavaScriptObfuscator.obfuscate(
  31. SelfDefendingTemplate(),
  32. NO_CUSTOM_NODES_PRESET
  33. ).getObfuscatedCode()
  34. );
  35. }
  36. }