stringArrayIntermediateVariablesCount option rework

This commit is contained in:
sanex
2020-09-10 11:40:13 +03:00
parent 84432e87e8
commit 5bbbc901d4
15 changed files with 230 additions and 399 deletions
@@ -25,7 +25,7 @@ export class StringArrayCallsWrapperBase64CodeHelper extends StringArrayCallsWra
atobPolyfill,
atobFunctionName,
selfDefendingCode,
stringArrayCallsWrapperName: this.stringArrayCallsWrapperNames.name
stringArrayCallsWrapperName: this.stringArrayCallsWrapperName
}
);
}
@@ -9,13 +9,11 @@ import { ICustomCodeHelperObfuscator } from '../../interfaces/custom-code-helper
import { IEscapeSequenceEncoder } from '../../interfaces/utils/IEscapeSequenceEncoder';
import { IOptions } from '../../interfaces/options/IOptions';
import { IRandomGenerator } from '../../interfaces/utils/IRandomGenerator';
import { IStringArrayCallsWrapperNames } from '../../interfaces/node-transformers/string-array-transformers/IStringArrayCallsWrapperNames';
import { initializable } from '../../decorators/Initializable';
import { SelfDefendingTemplate } from './templates/string-array-calls-wrapper/SelfDefendingTemplate';
import { StringArrayCallsWrapperTemplate } from './templates/string-array-calls-wrapper/StringArrayCallsWrapperTemplate';
import { StringArrayCallsWrapperIntermediateTemplate } from './templates/string-array-calls-wrapper/StringArrayCallsWrapperIntermediateTemplate';
import { AbstractCustomCodeHelper } from '../AbstractCustomCodeHelper';
import { NodeUtils } from '../../node/NodeUtils';
@@ -29,10 +27,10 @@ export class StringArrayCallsWrapperCodeHelper extends AbstractCustomCodeHelper
protected stringArrayName!: string;
/**
* @type {IStringArrayCallsWrapperNames}
* @type {string}
*/
@initializable()
protected stringArrayCallsWrapperNames!: IStringArrayCallsWrapperNames;
protected stringArrayCallsWrapperName!: string;
/**
* @type {IEscapeSequenceEncoder}
@@ -69,14 +67,14 @@ export class StringArrayCallsWrapperCodeHelper extends AbstractCustomCodeHelper
/**
* @param {string} stringArrayName
* @param {IStringArrayCallsWrapperNames} stringArrayCallsWrapperNames
* @param {string} stringArrayCallsWrapperName
*/
public initialize (
stringArrayName: string,
stringArrayCallsWrapperNames: IStringArrayCallsWrapperNames
stringArrayCallsWrapperName: string
): void {
this.stringArrayName = stringArrayName;
this.stringArrayCallsWrapperNames = stringArrayCallsWrapperNames;
this.stringArrayCallsWrapperName = stringArrayCallsWrapperName;
}
/**
@@ -92,15 +90,13 @@ export class StringArrayCallsWrapperCodeHelper extends AbstractCustomCodeHelper
*/
protected getCodeHelperTemplate (): string {
const decodeCodeHelperTemplate: string = this.getDecodeStringArrayTemplate();
const intermediateTemplate: string = this.getIntermediateTemplate();
const preservedNames: string[] = [`^${this.stringArrayName}$`];
return this.customCodeHelperObfuscator.obfuscateTemplate(
this.customCodeHelperFormatter.formatTemplate(StringArrayCallsWrapperTemplate(), {
decodeCodeHelperTemplate,
intermediateTemplate,
stringArrayCallsWrapperName: this.stringArrayCallsWrapperNames.name,
stringArrayCallsWrapperName: this.stringArrayCallsWrapperName,
stringArrayName: this.stringArrayName
}),
{
@@ -130,34 +126,9 @@ export class StringArrayCallsWrapperCodeHelper extends AbstractCustomCodeHelper
this.escapeSequenceEncoder
),
{
stringArrayCallsWrapperName: this.stringArrayCallsWrapperNames.name,
stringArrayCallsWrapperName: this.stringArrayCallsWrapperName,
stringArrayName: this.stringArrayName
}
);
}
/**
* @returns {string}
*/
private getIntermediateTemplate (): string {
const stringArrayCallsWrapperIntermediateNamesLength: number = this.stringArrayCallsWrapperNames
.intermediateNames
.length;
let intermediateTemplate: string = '';
for (let i = 0; i < stringArrayCallsWrapperIntermediateNamesLength; i++) {
const intermediateName: string = this.stringArrayCallsWrapperNames.intermediateNames[i];
intermediateTemplate += this.customCodeHelperFormatter.formatTemplate(
StringArrayCallsWrapperIntermediateTemplate(),
{
intermediateName,
stringArrayCallsWrapperName: this.stringArrayCallsWrapperNames.name
}
);
}
return intermediateTemplate;
}
}
@@ -29,7 +29,7 @@ export class StringArrayCallsWrapperRc4CodeHelper extends StringArrayCallsWrappe
atobPolyfill,
rc4Polyfill,
selfDefendingCode,
stringArrayCallsWrapperName: this.stringArrayCallsWrapperNames.name
stringArrayCallsWrapperName: this.stringArrayCallsWrapperName
}
);
}
@@ -11,7 +11,6 @@ import { ICallsGraphData } from '../../../interfaces/analyzers/calls-graph-analy
import { ICustomCodeHelper } from '../../../interfaces/custom-code-helpers/ICustomCodeHelper';
import { IOptions } from '../../../interfaces/options/IOptions';
import { IRandomGenerator } from '../../../interfaces/utils/IRandomGenerator';
import { IStringArrayCallsWrapperNames } from '../../../interfaces/node-transformers/string-array-transformers/IStringArrayCallsWrapperNames';
import { IStringArrayStorage } from '../../../interfaces/storages/string-array-transformers/IStringArrayStorage';
import { initializable } from '../../../decorators/Initializable';
@@ -139,12 +138,11 @@ export class StringArrayCodeHelperGroup extends AbstractCustomCodeHelperGroup {
const stringArrayCallsWrapperCodeHelperName: CustomCodeHelper = this.getStringArrayCallsWrapperCodeHelperName(stringArrayEncoding);
const stringArrayCallsWrapperCodeHelper: ICustomCodeHelper<TInitialData<StringArrayCallsWrapperCodeHelper>> =
this.customCodeHelperFactory(stringArrayCallsWrapperCodeHelperName);
const stringArrayCallsWrapperNames: IStringArrayCallsWrapperNames =
this.stringArrayStorage.getStorageCallsWrapperNames(stringArrayEncoding);
const stringArrayCallsWrapperName: string = this.stringArrayStorage.getStorageCallsWrapperName(stringArrayEncoding);
stringArrayCallsWrapperCodeHelper.initialize(
stringArrayName,
stringArrayCallsWrapperNames
stringArrayCallsWrapperName
);
this.customCodeHelpers.set(stringArrayCallsWrapperCodeHelperName, stringArrayCallsWrapperCodeHelper);
@@ -12,7 +12,5 @@ export function StringArrayCallsWrapperTemplate (): string {
return value;
};
{intermediateTemplate}
`;
}