mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Fixed string array name preserving inside string array helpers
This commit is contained in:
+32
@@ -1,5 +1,8 @@
|
||||
import { assert } from 'chai';
|
||||
|
||||
import { IdentifierNamesGenerator } from '../../../../src/enums/generators/identifier-names-generators/IdentifierNamesGenerator';
|
||||
import { StringArrayEncoding } from '../../../../src/enums/StringArrayEncoding';
|
||||
|
||||
import { NO_ADDITIONAL_NODES_PRESET } from '../../../../src/options/presets/NoCustomNodes';
|
||||
|
||||
import { readFileAsString } from '../../../helpers/readFileAsString';
|
||||
@@ -49,4 +52,33 @@ describe('StringArrayCallsWrapperCodeHelper', () => {
|
||||
assert.notMatch(obfuscatedCode, regExp);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Preserve string array name', () => {
|
||||
const callsWrapperRegExp: RegExp = new RegExp(`` +
|
||||
`var b *= *function *\\(c, *d\\) *{ *` +
|
||||
`c *= *c *- *0x0; *` +
|
||||
`var e *= *a\\[c]; *` +
|
||||
``);
|
||||
|
||||
let obfuscatedCode: string;
|
||||
|
||||
before(() => {
|
||||
const code: string = readFileAsString(__dirname + '/fixtures/simple-input.js');
|
||||
|
||||
obfuscatedCode = JavaScriptObfuscator.obfuscate(
|
||||
code,
|
||||
{
|
||||
...NO_ADDITIONAL_NODES_PRESET,
|
||||
identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator,
|
||||
stringArray: true,
|
||||
stringArrayThreshold: 1,
|
||||
stringArrayEncoding: StringArrayEncoding.Base64
|
||||
}
|
||||
).getObfuscatedCode();
|
||||
});
|
||||
|
||||
it('should preserve string array name', () => {
|
||||
assert.match(obfuscatedCode, callsWrapperRegExp);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
+58
-24
@@ -1,5 +1,7 @@
|
||||
import { assert } from 'chai';
|
||||
|
||||
import { IdentifierNamesGenerator } from '../../../../src/enums/generators/identifier-names-generators/IdentifierNamesGenerator';
|
||||
|
||||
import { NO_ADDITIONAL_NODES_PRESET } from '../../../../src/options/presets/NoCustomNodes';
|
||||
|
||||
import { readFileAsString } from '../../../helpers/readFileAsString';
|
||||
@@ -7,9 +9,58 @@ import { readFileAsString } from '../../../helpers/readFileAsString';
|
||||
import { JavaScriptObfuscator } from '../../../../src/JavaScriptObfuscatorFacade';
|
||||
|
||||
describe('StringArrayRotateFunctionCodeHelper', () => {
|
||||
const regExp: RegExp = /while *\(-- *_0x([a-f0-9]){4,6}\) *\{/;
|
||||
describe('Base behaviour', () => {
|
||||
const regExp: RegExp = /while *\(-- *_0x([a-f0-9]){4,6}\) *\{/;
|
||||
|
||||
describe('`stringArray` option is set', () => {
|
||||
let obfuscatedCode: string;
|
||||
|
||||
before(() => {
|
||||
const code: string = readFileAsString(__dirname + '/fixtures/simple-input.js');
|
||||
|
||||
obfuscatedCode = JavaScriptObfuscator.obfuscate(
|
||||
code,
|
||||
{
|
||||
...NO_ADDITIONAL_NODES_PRESET,
|
||||
rotateStringArray: true,
|
||||
stringArray: true,
|
||||
stringArrayThreshold: 1
|
||||
}
|
||||
).getObfuscatedCode();
|
||||
});
|
||||
|
||||
it('should correctly append code helper into the obfuscated code', () => {
|
||||
assert.match(obfuscatedCode, regExp);
|
||||
});
|
||||
});
|
||||
|
||||
describe('`stringArray` option isn\'t set', () => {
|
||||
let obfuscatedCode: string;
|
||||
|
||||
before(() => {
|
||||
const code: string = readFileAsString(__dirname + '/fixtures/simple-input.js');
|
||||
|
||||
obfuscatedCode = JavaScriptObfuscator.obfuscate(
|
||||
code,
|
||||
{
|
||||
...NO_ADDITIONAL_NODES_PRESET,
|
||||
rotateStringArray: false,
|
||||
stringArray: true,
|
||||
stringArrayThreshold: 1
|
||||
}
|
||||
).getObfuscatedCode();
|
||||
});
|
||||
|
||||
it('shouldn\'t append code helper into the obfuscated code', () => {
|
||||
assert.notMatch(obfuscatedCode, regExp);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('Preserve string array name', () => {
|
||||
const rotateLogicRegExp: RegExp = /b\['push']\(b\['shift']\(\)\);/;
|
||||
const incrementRegExp: RegExp = /f\(\+\+e\);/;
|
||||
|
||||
describe('`stringArray` option is set', () => {
|
||||
let obfuscatedCode: string;
|
||||
|
||||
before(() => {
|
||||
@@ -19,6 +70,7 @@ describe('StringArrayRotateFunctionCodeHelper', () => {
|
||||
code,
|
||||
{
|
||||
...NO_ADDITIONAL_NODES_PRESET,
|
||||
identifierNamesGenerator: IdentifierNamesGenerator.MangledIdentifierNamesGenerator,
|
||||
rotateStringArray: true,
|
||||
stringArray: true,
|
||||
stringArrayThreshold: 1
|
||||
@@ -26,30 +78,12 @@ describe('StringArrayRotateFunctionCodeHelper', () => {
|
||||
).getObfuscatedCode();
|
||||
});
|
||||
|
||||
it('should correctly append code helper into the obfuscated code', () => {
|
||||
assert.match(obfuscatedCode, regExp);
|
||||
});
|
||||
});
|
||||
|
||||
describe('`stringArray` option isn\'t set', () => {
|
||||
let obfuscatedCode: string;
|
||||
|
||||
before(() => {
|
||||
const code: string = readFileAsString(__dirname + '/fixtures/simple-input.js');
|
||||
|
||||
obfuscatedCode = JavaScriptObfuscator.obfuscate(
|
||||
code,
|
||||
{
|
||||
...NO_ADDITIONAL_NODES_PRESET,
|
||||
rotateStringArray: false,
|
||||
stringArray: true,
|
||||
stringArrayThreshold: 1
|
||||
}
|
||||
).getObfuscatedCode();
|
||||
it('should preserve string array name', () => {
|
||||
assert.match(obfuscatedCode, rotateLogicRegExp);
|
||||
});
|
||||
|
||||
it('shouldn\'t append code helper into the obfuscated code', () => {
|
||||
assert.notMatch(obfuscatedCode, regExp);
|
||||
it('generate valid identifier names', () => {
|
||||
assert.match(obfuscatedCode, incrementRegExp);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user