Removed obfuscation-event-emitter to allow more flexible append of node inside custom code helper groups.

This commit is contained in:
sanex
2020-12-25 11:00:11 +03:00
parent 102cf2ff10
commit a118112095
19 changed files with 78 additions and 178 deletions
+4
View File
@@ -1,5 +1,9 @@
Change Log
v2.10.0
---
* Some internal refactoring related to node append events
v2.9.4
---
* Fixed missing prefix of root identifiers added by `stringArrayWrappersCount` option when `identifiersPrefix` option is set
+1 -2
View File
@@ -1,6 +1,6 @@
{
"name": "javascript-obfuscator",
"version": "2.9.4",
"version": "2.10.0",
"description": "JavaScript obfuscator",
"keywords": [
"obfuscator",
@@ -31,7 +31,6 @@
"commander": "6.2.1",
"eslint-scope": "5.1.1",
"estraverse": "5.2.0",
"eventemitter3": "4.0.7",
"fast-deep-equal": "3.1.3",
"inversify": "5.0.5",
"js-string-escape": "1.0.1",
@@ -28,7 +28,6 @@ import { ICodeTransformersRunner } from '../interfaces/code-transformers/ICodeTr
import { IInversifyContainerFacade } from '../interfaces/container/IInversifyContainerFacade';
import { IJavaScriptObfuscator } from '../interfaces/IJavaScriptObfsucator';
import { ILogger } from '../interfaces/logger/ILogger';
import { IObfuscationEventEmitter } from '../interfaces/event-emitters/IObfuscationEventEmitter';
import { IObfuscatedCode } from '../interfaces/source-code/IObfuscatedCode';
import { ISourceCode } from '../interfaces/source-code/ISourceCode';
import { INodeTransformersRunner } from '../interfaces/node-transformers/INodeTransformersRunner';
@@ -37,7 +36,6 @@ import { CodeTransformersRunner } from '../code-transformers/CodeTransformersRun
import { JavaScriptObfuscator } from '../JavaScriptObfuscator';
import { Logger } from '../logger/Logger';
import { NodeTransformersRunner } from '../node-transformers/NodeTransformersRunner';
import { ObfuscationEventEmitter } from '../event-emitters/ObfuscationEventEmitter';
import { ObfuscatedCode } from '../source-code/ObfuscatedCode';
import { SourceCode } from '../source-code/SourceCode';
@@ -199,11 +197,6 @@ export class InversifyContainerFacade implements IInversifyContainerFacade {
};
});
this.container
.bind<IObfuscationEventEmitter>(ServiceIdentifiers.IObfuscationEventEmitter)
.to(ObfuscationEventEmitter)
.inSingletonScope();
// modules
this.container.load(analyzersModule);
this.container.load(codeTransformersModule);
-1
View File
@@ -40,7 +40,6 @@ export enum ServiceIdentifiers {
INodeTransformerNamesGroupsBuilder = 'INodeTransformerNamesGroupsBuilder',
INodeTransformersRunner = 'INodeTransformersRunner',
INumberNumericalExpressionAnalyzer = 'INumberNumericalExpressionAnalyzer',
IObfuscationEventEmitter = 'IObfuscationEventEmitter',
IObfuscatedCode = 'IObfuscatedCode',
IOptions = 'IOptions',
IOptionsNormalizer = 'IOptionsNormalizer',
@@ -2,9 +2,7 @@ import { inject, injectable } from 'inversify';
import { ServiceIdentifiers } from '../container/ServiceIdentifiers';
import { TIdentifierNamesGeneratorFactory } from '../types/container/generators/TIdentifierNamesGeneratorFactory';
import { TNodeWithStatements } from '../types/node/TNodeWithStatements';
import { ICallsGraphData } from '../interfaces/analyzers/calls-graph-analyzer/ICallsGraphData';
import { ICustomCodeHelper } from '../interfaces/custom-code-helpers/ICustomCodeHelper';
import { ICustomCodeHelperGroup } from '../interfaces/custom-code-helpers/ICustomCodeHelperGroup';
import { IIdentifierNamesGenerator } from '../interfaces/generators/identifier-names-generators/IIdentifierNamesGenerator';
@@ -12,7 +10,6 @@ import { IOptions } from '../interfaces/options/IOptions';
import { IRandomGenerator } from '../interfaces/utils/IRandomGenerator';
import { CustomCodeHelper } from '../enums/custom-code-helpers/CustomCodeHelper';
import { ObfuscationEvent } from '../enums/event-emitters/ObfuscationEvent';
@injectable()
export abstract class AbstractCustomCodeHelperGroup implements ICustomCodeHelperGroup {
@@ -31,11 +28,6 @@ export abstract class AbstractCustomCodeHelperGroup implements ICustomCodeHelper
*/
protected readonly randomGenerator: IRandomGenerator;
/**
* @type {ObfuscationEvent}
*/
protected abstract readonly appendEvent: ObfuscationEvent;
/**
* @type {Map<CustomCodeHelper, ICustomCodeHelper>}
*/
@@ -57,13 +49,6 @@ export abstract class AbstractCustomCodeHelperGroup implements ICustomCodeHelper
this.options = options;
}
/**
* @returns {ObfuscationEvent}
*/
public getAppendEvent (): ObfuscationEvent {
return this.appendEvent;
}
/**
* @returns {Map<CustomCodeHelper, ICustomCodeHelper>}
*/
@@ -94,11 +79,5 @@ export abstract class AbstractCustomCodeHelperGroup implements ICustomCodeHelper
return this.randomGenerator.getRandomInteger(0, Math.max(0, Math.round(callsGraphLength - 1)));
}
/**
* @param {TNodeWithStatements} nodeWithStatements
* @param {ICallsGraphData[]} callsGraphData
*/
public abstract appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void;
public abstract initialize (): void;
}
@@ -9,7 +9,7 @@ import { ICustomCodeHelperFormatter } from '../../interfaces/custom-code-helpers
import { IOptions } from '../../interfaces/options/IOptions';
import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator';
import { ObfuscationEvent } from '../../enums/event-emitters/ObfuscationEvent';
import { NodeTransformationStage } from '../../enums/node-transformers/NodeTransformationStage';
import { initializable } from '../../decorators/Initializable';
@@ -27,10 +27,10 @@ export class CallsControllerFunctionCodeHelper extends AbstractCustomCodeHelper
protected callsControllerFunctionName!: string;
/**
* @type {ObfuscationEvent}
* @type {NodeTransformationStage}
*/
@initializable()
private appendEvent!: ObfuscationEvent;
private nodeTransformationStage!: NodeTransformationStage;
/**
* @param {TIdentifierNamesGeneratorFactory} identifierNamesGeneratorFactory
@@ -57,12 +57,12 @@ export class CallsControllerFunctionCodeHelper extends AbstractCustomCodeHelper
}
/**
* @param {ObfuscationEvent} appendEvent
* @param {NodeTransformationStage} nodeTransformationStage
* @param {string} callsControllerFunctionName
*/
public initialize (appendEvent: ObfuscationEvent, callsControllerFunctionName: string): void {
this.appendEvent = appendEvent;
this.callsControllerFunctionName = callsControllerFunctionName;
public initialize (nodeTransformationStage: NodeTransformationStage, callsControllerFunctionName: string): void {
this.nodeTransformationStage = nodeTransformationStage;
this.callsControllerFunctionName = nodeTransformationStage;
}
/**
@@ -77,7 +77,7 @@ export class CallsControllerFunctionCodeHelper extends AbstractCustomCodeHelper
* @returns {string}
*/
protected getCodeHelperTemplate (): string {
if (this.appendEvent === ObfuscationEvent.AfterObfuscation) {
if (this.nodeTransformationStage === NodeTransformationStage.Finalizing) {
return this.customCodeHelperObfuscator.obfuscateTemplate(
this.customCodeHelperFormatter.formatTemplate(SingleCallControllerTemplate(), {
callControllerFunctionName: this.callsControllerFunctionName
@@ -15,7 +15,7 @@ import { ICallsGraphData } from '../../../interfaces/analyzers/calls-graph-analy
import { initializable } from '../../../decorators/Initializable';
import { CustomCodeHelper } from '../../../enums/custom-code-helpers/CustomCodeHelper';
import { ObfuscationEvent } from '../../../enums/event-emitters/ObfuscationEvent';
import { NodeTransformationStage } from '../../../enums/node-transformers/NodeTransformationStage';
import { AbstractCustomCodeHelperGroup } from '../../AbstractCustomCodeHelperGroup';
import { CallsControllerFunctionCodeHelper } from '../../calls-controller/CallsControllerFunctionCodeHelper';
@@ -31,11 +31,6 @@ export class ConsoleOutputCodeHelperGroup extends AbstractCustomCodeHelperGroup
@initializable()
protected customCodeHelpers!: Map <CustomCodeHelper, ICustomCodeHelper>;
/**
* @type {ObfuscationEvent}
*/
protected readonly appendEvent: ObfuscationEvent = ObfuscationEvent.BeforeObfuscation;
/**
* @type {TCustomCodeHelperFactory}
*/
@@ -63,7 +58,7 @@ export class ConsoleOutputCodeHelperGroup extends AbstractCustomCodeHelperGroup
* @param {TNodeWithStatements} nodeWithStatements
* @param {ICallsGraphData[]} callsGraphData
*/
public appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void {
public appendOnPreparing (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void {
if (!this.options.disableConsoleOutput) {
return;
}
@@ -101,7 +96,7 @@ export class ConsoleOutputCodeHelperGroup extends AbstractCustomCodeHelperGroup
this.appendCustomNodeIfExist(
CustomCodeHelper.CallsControllerFunction,
(customCodeHelper: ICustomCodeHelper<TInitialData<CallsControllerFunctionCodeHelper>>) => {
customCodeHelper.initialize(this.appendEvent, callsControllerFunctionName);
customCodeHelper.initialize(NodeTransformationStage.Preparing, callsControllerFunctionName);
NodeAppender.prepend(callsControllerHostNode, customCodeHelper.getNode());
}
@@ -15,7 +15,7 @@ import { ICallsGraphData } from '../../../interfaces/analyzers/calls-graph-analy
import { initializable } from '../../../decorators/Initializable';
import { CustomCodeHelper } from '../../../enums/custom-code-helpers/CustomCodeHelper';
import { ObfuscationEvent } from '../../../enums/event-emitters/ObfuscationEvent';
import { NodeTransformationStage } from '../../../enums/node-transformers/NodeTransformationStage';
import { AbstractCustomCodeHelperGroup } from '../../AbstractCustomCodeHelperGroup';
import { CallsControllerFunctionCodeHelper } from '../../calls-controller/CallsControllerFunctionCodeHelper';
@@ -34,11 +34,6 @@ export class DebugProtectionCodeHelperGroup extends AbstractCustomCodeHelperGrou
@initializable()
protected customCodeHelpers!: Map <CustomCodeHelper, ICustomCodeHelper>;
/**
* @type {ObfuscationEvent}
*/
protected readonly appendEvent: ObfuscationEvent = ObfuscationEvent.BeforeObfuscation;
/**
* @type {TCustomCodeHelperFactory}
*/
@@ -66,7 +61,7 @@ export class DebugProtectionCodeHelperGroup extends AbstractCustomCodeHelperGrou
* @param {TNodeWithStatements} nodeWithStatements
* @param {ICallsGraphData[]} callsGraphData
*/
public appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void {
public appendOnPreparing (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void {
if (!this.options.debugProtection) {
return;
}
@@ -104,7 +99,7 @@ export class DebugProtectionCodeHelperGroup extends AbstractCustomCodeHelperGrou
this.appendCustomNodeIfExist(
CustomCodeHelper.CallsControllerFunction,
(customCodeHelper: ICustomCodeHelper<TInitialData<CallsControllerFunctionCodeHelper>>) => {
customCodeHelper.initialize(this.appendEvent, callsControllerFunctionName);
customCodeHelper.initialize(NodeTransformationStage.Preparing, callsControllerFunctionName);
NodeAppender.prepend(callsControllerHostNode, customCodeHelper.getNode());
}
@@ -15,7 +15,7 @@ import { ICallsGraphData } from '../../../interfaces/analyzers/calls-graph-analy
import { initializable } from '../../../decorators/Initializable';
import { CustomCodeHelper } from '../../../enums/custom-code-helpers/CustomCodeHelper';
import { ObfuscationEvent } from '../../../enums/event-emitters/ObfuscationEvent';
import { NodeTransformationStage } from '../../../enums/node-transformers/NodeTransformationStage';
import { AbstractCustomCodeHelperGroup } from '../../AbstractCustomCodeHelperGroup';
import { CallsControllerFunctionCodeHelper } from '../../calls-controller/CallsControllerFunctionCodeHelper';
@@ -31,11 +31,6 @@ export class DomainLockCustomCodeHelperGroup extends AbstractCustomCodeHelperGro
@initializable()
protected customCodeHelpers!: Map <CustomCodeHelper, ICustomCodeHelper>;
/**
* @type {ObfuscationEvent}
*/
protected readonly appendEvent: ObfuscationEvent = ObfuscationEvent.BeforeObfuscation;
/**
* @type {TCustomCodeHelperFactory}
*/
@@ -63,7 +58,7 @@ export class DomainLockCustomCodeHelperGroup extends AbstractCustomCodeHelperGro
* @param {TNodeWithStatements} nodeWithStatements
* @param {ICallsGraphData[]} callsGraphData
*/
public appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void {
public appendOnPreparing (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void {
if (!this.options.domainLock.length) {
return;
}
@@ -101,7 +96,7 @@ export class DomainLockCustomCodeHelperGroup extends AbstractCustomCodeHelperGro
this.appendCustomNodeIfExist(
CustomCodeHelper.CallsControllerFunction,
(customCodeHelper: ICustomCodeHelper<TInitialData<CallsControllerFunctionCodeHelper>>) => {
customCodeHelper.initialize(this.appendEvent, callsControllerFunctionName);
customCodeHelper.initialize(NodeTransformationStage.Preparing, callsControllerFunctionName);
NodeAppender.prepend(callsControllerHostNode, customCodeHelper.getNode());
}
@@ -15,7 +15,7 @@ import { ICallsGraphData } from '../../../interfaces/analyzers/calls-graph-analy
import { initializable } from '../../../decorators/Initializable';
import { CustomCodeHelper } from '../../../enums/custom-code-helpers/CustomCodeHelper';
import { ObfuscationEvent } from '../../../enums/event-emitters/ObfuscationEvent';
import { NodeTransformationStage } from '../../../enums/node-transformers/NodeTransformationStage';
import { AbstractCustomCodeHelperGroup } from '../../AbstractCustomCodeHelperGroup';
import { CallsControllerFunctionCodeHelper } from '../../calls-controller/CallsControllerFunctionCodeHelper';
@@ -31,11 +31,6 @@ export class SelfDefendingCodeHelperGroup extends AbstractCustomCodeHelperGroup
@initializable()
protected customCodeHelpers!: Map <CustomCodeHelper, ICustomCodeHelper>;
/**
* @type {ObfuscationEvent}
*/
protected appendEvent: ObfuscationEvent = ObfuscationEvent.BeforeObfuscation;
/**
* @type {TCustomCodeHelperFactory}
*/
@@ -63,7 +58,7 @@ export class SelfDefendingCodeHelperGroup extends AbstractCustomCodeHelperGroup
* @param {TNodeWithStatements} nodeWithStatements
* @param {ICallsGraphData[]} callsGraphData
*/
public appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void {
public appendOnPreparing (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void {
if (!this.options.selfDefending) {
return;
}
@@ -101,7 +96,7 @@ export class SelfDefendingCodeHelperGroup extends AbstractCustomCodeHelperGroup
this.appendCustomNodeIfExist(
CustomCodeHelper.CallsControllerFunction,
(customCodeHelper: ICustomCodeHelper<TInitialData<CallsControllerFunctionCodeHelper>>) => {
customCodeHelper.initialize(this.appendEvent, callsControllerFunctionName);
customCodeHelper.initialize(NodeTransformationStage.Preparing, callsControllerFunctionName);
NodeAppender.prepend(callsControllerHostNode, customCodeHelper.getNode());
}
@@ -16,7 +16,6 @@ import { IStringArrayStorage } from '../../../interfaces/storages/string-array-t
import { initializable } from '../../../decorators/Initializable';
import { CustomCodeHelper } from '../../../enums/custom-code-helpers/CustomCodeHelper';
import { ObfuscationEvent } from '../../../enums/event-emitters/ObfuscationEvent';
import { StringArrayEncoding } from '../../../enums/node-transformers/string-array-transformers/StringArrayEncoding';
import { AbstractCustomCodeHelperGroup } from '../../AbstractCustomCodeHelperGroup';
@@ -42,11 +41,6 @@ export class StringArrayCodeHelperGroup extends AbstractCustomCodeHelperGroup {
@initializable()
protected customCodeHelpers!: Map <CustomCodeHelper, ICustomCodeHelper>;
/**
* @type {ObfuscationEvent}
*/
protected appendEvent: ObfuscationEvent = ObfuscationEvent.AfterObfuscation;
/**
* @type {TCustomCodeHelperFactory}
*/
@@ -82,7 +76,7 @@ export class StringArrayCodeHelperGroup extends AbstractCustomCodeHelperGroup {
* @param {TNodeWithStatements} nodeWithStatements
* @param {ICallsGraphData[]} callsGraphData
*/
public appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void {
public appendOnFinalizing (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void {
if (!this.stringArrayStorage.getLength()) {
return;
}
@@ -1,4 +0,0 @@
export enum ObfuscationEvent {
AfterObfuscation = 'afterObfuscation',
BeforeObfuscation = 'beforeObfuscation'
}
@@ -1,9 +0,0 @@
import { decorate, injectable } from 'inversify';
import EventEmitter from 'eventemitter3';
import { IObfuscationEventEmitter } from '../interfaces/event-emitters/IObfuscationEventEmitter';
decorate(injectable(), EventEmitter);
@injectable()
export class ObfuscationEventEmitter extends EventEmitter implements IObfuscationEventEmitter {}
@@ -1,24 +1,11 @@
import { TNodeWithStatements } from '../../types/node/TNodeWithStatements';
import { TCustomCodeHelpersGroupAppendMethods } from '../../types/custom-code-helpers/TCustomCodeHelpersGroupAppendMethods';
import { ICustomCodeHelper } from './ICustomCodeHelper';
import { IInitializable } from '../IInitializable';
import { ICallsGraphData } from '../analyzers/calls-graph-analyzer/ICallsGraphData';
import { CustomCodeHelper } from '../../enums/custom-code-helpers/CustomCodeHelper';
import { ObfuscationEvent } from '../../enums/event-emitters/ObfuscationEvent';
export interface ICustomCodeHelperGroup extends IInitializable {
/**
* @param nodeWithStatements
* @param callsGraphData
*/
appendNodes (nodeWithStatements: TNodeWithStatements, callsGraphData: ICallsGraphData[]): void;
/**
* @returns {ObfuscationEvent}
*/
getAppendEvent (): ObfuscationEvent;
export interface ICustomCodeHelperGroup extends IInitializable, TCustomCodeHelpersGroupAppendMethods {
/**
* @type {Map <CustomCodeHelper, ICustomCodeHelper>}
*/
@@ -1,28 +0,0 @@
import * as ESTree from 'estree';
import { ICallsGraphData } from '../analyzers/calls-graph-analyzer/ICallsGraphData';
import { ObfuscationEvent } from '../../enums/event-emitters/ObfuscationEvent';
export interface IObfuscationEventEmitter {
/**
* @param {ObfuscationEvent} event
* @param args
* @returns {boolean}
*/
emit (event: ObfuscationEvent, ...args: [ESTree.Program, ICallsGraphData[]]): boolean;
/**
* @param event
* @param listener
* @returns this
*/
on (event: ObfuscationEvent, listener: Function): this;
/**
* @param event
* @param listener
* @returns this
*/
once (event: ObfuscationEvent, listener: Function): this;
}
@@ -6,7 +6,6 @@ import * as ESTree from 'estree';
import { TCustomCodeHelperGroupStorage } from '../../types/storages/TCustomCodeHelperGroupStorage';
import { ICustomCodeHelperGroup } from '../../interfaces/custom-code-helpers/ICustomCodeHelperGroup';
import { IObfuscationEventEmitter } from '../../interfaces/event-emitters/IObfuscationEventEmitter';
import { IOptions } from '../../interfaces/options/IOptions';
import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator';
import { ICallsGraphAnalyzer } from '../../interfaces/analyzers/calls-graph-analyzer/ICallsGraphAnalyzer';
@@ -15,7 +14,6 @@ import { IPrevailingKindOfVariablesAnalyzer } from '../../interfaces/analyzers/c
import { IVisitor } from '../../interfaces/node-transformers/IVisitor';
import { NodeTransformer } from '../../enums/node-transformers/NodeTransformer';
import { ObfuscationEvent } from '../../enums/event-emitters/ObfuscationEvent';
import { NodeTransformationStage } from '../../enums/node-transformers/NodeTransformationStage';
import { AbstractNodeTransformer } from '../AbstractNodeTransformer';
@@ -39,11 +37,6 @@ export class CustomCodeHelpersTransformer extends AbstractNodeTransformer {
*/
private readonly customCodeHelperGroupStorage: TCustomCodeHelperGroupStorage;
/**
* @type {IObfuscationEventEmitter}
*/
private readonly obfuscationEventEmitter: IObfuscationEventEmitter;
/**
* @type {ICallsGraphAnalyzer}
*/
@@ -62,7 +55,6 @@ export class CustomCodeHelpersTransformer extends AbstractNodeTransformer {
/**
* @param {ICallsGraphAnalyzer} callsGraphAnalyzer
* @param {IPrevailingKindOfVariablesAnalyzer} prevailingKindOfVariablesAnalyzer
* @param {IObfuscationEventEmitter} obfuscationEventEmitter
* @param {TCustomCodeHelperGroupStorage} customCodeHelperGroupStorage
* @param {IRandomGenerator} randomGenerator
* @param {IOptions} options
@@ -71,7 +63,6 @@ export class CustomCodeHelpersTransformer extends AbstractNodeTransformer {
@inject(ServiceIdentifiers.ICallsGraphAnalyzer) callsGraphAnalyzer: ICallsGraphAnalyzer,
@inject(ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer)
prevailingKindOfVariablesAnalyzer: IPrevailingKindOfVariablesAnalyzer,
@inject(ServiceIdentifiers.IObfuscationEventEmitter) obfuscationEventEmitter: IObfuscationEventEmitter,
@inject(ServiceIdentifiers.TCustomNodeGroupStorage) customCodeHelperGroupStorage: TCustomCodeHelperGroupStorage,
@inject(ServiceIdentifiers.IRandomGenerator) randomGenerator: IRandomGenerator,
@inject(ServiceIdentifiers.IOptions) options: IOptions
@@ -80,7 +71,6 @@ export class CustomCodeHelpersTransformer extends AbstractNodeTransformer {
this.callsGraphAnalyzer = callsGraphAnalyzer;
this.prevailingKindOfVariablesAnalyzer = prevailingKindOfVariablesAnalyzer;
this.obfuscationEventEmitter = obfuscationEventEmitter;
this.customCodeHelperGroupStorage = customCodeHelperGroupStorage;
}
@@ -95,24 +85,23 @@ export class CustomCodeHelpersTransformer extends AbstractNodeTransformer {
leave: (node: ESTree.Node, parentNode: ESTree.Node | null): ESTree.Node | undefined => {
if (NodeGuards.isProgramNode(node)) {
this.prepareNode(node, parentNode);
this.appendCustomNodesBeforeObfuscation(node, parentNode);
this.appendCustomNodesForPreparingStage(node, parentNode);
return this.transformNode(node, parentNode);
}
}
};
case NodeTransformationStage.Finalizing:
default:
return {
leave: (node: ESTree.Node, parentNode: ESTree.Node | null): void => {
leave: (node: ESTree.Node, parentNode: ESTree.Node | null): ESTree.Node | undefined => {
if (NodeGuards.isProgramNode(node)) {
this.appendCustomNodesAfterObfuscation(node, parentNode);
this.appendCustomNodesForStage(nodeTransformationStage, node, parentNode);
}
return node;
}
};
default:
return null;
}
}
@@ -138,26 +127,29 @@ export class CustomCodeHelpersTransformer extends AbstractNodeTransformer {
* @param {Program} node
* @param {Node | null} parentNode
*/
private appendCustomNodesBeforeObfuscation (node: ESTree.Program, parentNode: ESTree.Node | null): void {
private appendCustomNodesForPreparingStage (node: ESTree.Program, parentNode: ESTree.Node | null): void {
this.customCodeHelperGroupStorage
.getStorage()
.forEach((customCodeHelperGroup: ICustomCodeHelperGroup) => {
customCodeHelperGroup.initialize();
this.obfuscationEventEmitter.once(
customCodeHelperGroup.getAppendEvent(),
customCodeHelperGroup.appendNodes.bind(customCodeHelperGroup)
);
customCodeHelperGroup.appendOnPreparing?.(node, this.callsGraphData);
});
this.obfuscationEventEmitter.emit(ObfuscationEvent.BeforeObfuscation, node, this.callsGraphData);
}
/**
* @param {NodeTransformationStage} nodeTransformationStage
* @param {Program} node
* @param {Node | null} parentNode
*/
private appendCustomNodesAfterObfuscation (node: ESTree.Program, parentNode: ESTree.Node | null): void {
this.obfuscationEventEmitter.emit(ObfuscationEvent.AfterObfuscation, node, this.callsGraphData);
private appendCustomNodesForStage (
nodeTransformationStage: NodeTransformationStage,
node: ESTree.Program,
parentNode: ESTree.Node | null
): void {
this.customCodeHelperGroupStorage
.getStorage()
.forEach((customCodeHelperGroup: ICustomCodeHelperGroup) => {
customCodeHelperGroup[`appendOn${nodeTransformationStage}`]?.(node, this.callsGraphData);
});
}
}
@@ -0,0 +1,16 @@
import { TNodeWithStatements } from '../node/TNodeWithStatements';
import { ICallsGraphData } from '../../interfaces/analyzers/calls-graph-analyzer/ICallsGraphData';
import { NodeTransformationStage } from '../../enums/node-transformers/NodeTransformationStage';
export type TCustomCodeHelpersGroupAppendMethods = {
/**
* @param nodeWithStatements
* @param callsGraphData
*/
[key in `appendOn${Capitalize<NodeTransformationStage>}`]?: (
nodeWithStatements: TNodeWithStatements,
callsGraphData: ICallsGraphData[]
) => void;
};
+7 -4
View File
@@ -7,14 +7,17 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo
let obfuscatedCode: string = JavaScriptObfuscator.obfuscate(
`
const test = () => ({
foo: 'bar'
});
function hi() {
console.log("Hello World!");
}
hi();
`,
{
...NO_ADDITIONAL_NODES_PRESET,
compact: false,
transformObjectKeys: true
stringArray: true,
stringArrayThreshold: 1,
rotateStringArray: true
}
).getObfuscatedCode();
+8 -13
View File
@@ -530,10 +530,10 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.3.tgz#6356df2647de9eac569f9a52eda3480fa9e70b4d"
integrity sha512-01s+ac4qerwd6RHD+mVbOEsraDHSgUaefQlEdBbUolnQFjKwCr7luvAlEwW1RFojh67u0z4OUTjPn9LEl4zIkA==
"@types/node@14.14.14":
version "14.14.14"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.14.tgz#f7fd5f3cc8521301119f63910f0fb965c7d761ae"
integrity sha512-UHnOPWVWV1z+VV8k6L1HhG7UbGBgIdghqF3l9Ny9ApPghbjICXkUJSd/b9gOgQfjM1r+37cipdw/HJ3F6ICEnQ==
"@types/node@14.14.16":
version "14.14.16"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.16.tgz#3cc351f8d48101deadfed4c9e4f116048d437b4b"
integrity sha512-naXYePhweTi+BMv11TgioE2/FXU4fSl29HAH1ffxVciNsH3rYXjNP2yM8wqmSm7jS20gM8TIklKiTen+1iVncw==
"@types/normalize-package-data@^2.4.0":
version "2.4.0"
@@ -553,10 +553,10 @@
"@types/glob" "*"
"@types/node" "*"
"@types/sinon@9.0.9":
version "9.0.9"
resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.9.tgz#115843b491583f924080f684b6d0d7438344f73c"
integrity sha512-z/y8maYOQyYLyqaOB+dYQ6i0pxKLOsfwCmHmn4T7jS/SDHicIslr37oE3Dg8SCqKrKeBy6Lemu7do2yy+unLrw==
"@types/sinon@9.0.10":
version "9.0.10"
resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.10.tgz#7fb9bcb6794262482859cab66d59132fca18fcf7"
integrity sha512-/faDC0erR06wMdybwI/uR8wEKV/E83T0k4sepIpB7gXuy2gzx2xiOjmztq6a2Y6rIGJ04D+6UU0VBmWy+4HEMA==
dependencies:
"@types/sinonjs__fake-timers" "*"
@@ -2037,11 +2037,6 @@ esutils@^2.0.2:
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
eventemitter3@4.0.7:
version "4.0.7"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
events@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"