mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Removed obfuscation-event-emitter to allow more flexible append of node inside custom code helper groups.
This commit is contained in:
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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();
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user