mirror of
https://github.com/javascript-obfuscator/javascript-obfuscator
synced 2026-08-09 12:42:29 +00:00
Additional tests of stringArrayIntermediateVariablesCount option
This commit is contained in:
+135
-59
@@ -500,80 +500,156 @@ describe('StringArrayTransformer', function () {
|
|||||||
|
|
||||||
describe('Variant #2: `stringArrayIntermediateVariablesCount` option is enabled', () => {
|
describe('Variant #2: `stringArrayIntermediateVariablesCount` option is enabled', () => {
|
||||||
describe('Variant #1: root scope', () => {
|
describe('Variant #1: root scope', () => {
|
||||||
const stringArrayIntermediateCallRegExp: RegExp = new RegExp(
|
describe('Variant #1: `1` intermediate variable for each encoding type', () => {
|
||||||
'return _0x([a-f0-9]){4,6};' +
|
const stringArrayIntermediateCallRegExp: RegExp = new RegExp(
|
||||||
'};' +
|
'return _0x([a-f0-9]){4,6};' +
|
||||||
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};' +
|
'};' +
|
||||||
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};' +
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};' +
|
||||||
// this one may be added or not depends on:
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};' +
|
||||||
// if all literal values encoded with a single encoding or not
|
'var foo *= *_0x([a-f0-9]){4,6}\\(\'0x0\'\\);' +
|
||||||
'(?:var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};)?' +
|
'var bar *= *_0x([a-f0-9]){4,6}\\(\'0x1\'\\);' +
|
||||||
'var foo *= *_0x([a-f0-9]){4,6}\\(\'0x0\'\\);' +
|
'var baz *= *_0x([a-f0-9]){4,6}\\(\'0x2\'\\);'
|
||||||
'var bar *= *_0x([a-f0-9]){4,6}\\(\'0x1\'\\);' +
|
);
|
||||||
'var baz *= *_0x([a-f0-9]){4,6}\\(\'0x2\'\\);'
|
|
||||||
);
|
|
||||||
|
|
||||||
let obfuscatedCode: string;
|
let obfuscatedCode: string;
|
||||||
|
|
||||||
before(() => {
|
before(() => {
|
||||||
const code: string = readFileAsString(__dirname + '/fixtures/intermediate-variables-count.js');
|
const code: string = readFileAsString(__dirname + '/fixtures/intermediate-variables-count.js');
|
||||||
|
|
||||||
obfuscatedCode = JavaScriptObfuscator.obfuscate(
|
obfuscatedCode = JavaScriptObfuscator.obfuscate(
|
||||||
code,
|
code,
|
||||||
{
|
{
|
||||||
...NO_ADDITIONAL_NODES_PRESET,
|
...NO_ADDITIONAL_NODES_PRESET,
|
||||||
stringArray: true,
|
stringArray: true,
|
||||||
stringArrayEncoding: [
|
stringArrayEncoding: [
|
||||||
StringArrayEncoding.None,
|
StringArrayEncoding.None,
|
||||||
StringArrayEncoding.Base64
|
StringArrayEncoding.Base64
|
||||||
],
|
],
|
||||||
stringArrayIntermediateVariablesCount: 2,
|
stringArrayIntermediateVariablesCount: 1,
|
||||||
stringArrayThreshold: 1
|
stringArrayThreshold: 1
|
||||||
}
|
}
|
||||||
).getObfuscatedCode();
|
).getObfuscatedCode();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should add intermediate variables for both `none` and `base64` string array wrappers', () => {
|
||||||
|
assert.match(obfuscatedCode, stringArrayIntermediateCallRegExp);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should add intermediate variables for both `none` and `base64` string array wrappers', () => {
|
describe('Variant #2: `2` intermediate variables for each encoding type', () => {
|
||||||
assert.match(obfuscatedCode, stringArrayIntermediateCallRegExp);
|
const stringArrayIntermediateCallRegExp: RegExp = new RegExp(
|
||||||
});
|
'return _0x([a-f0-9]){4,6};' +
|
||||||
});
|
'};' +
|
||||||
|
|
||||||
describe('Variant #2: function scope', () => {
|
|
||||||
const stringArrayIntermediateCallRegExp: RegExp = new RegExp(
|
|
||||||
'function test *\\( *\\) *{' +
|
|
||||||
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};' +
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};' +
|
||||||
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};' +
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};' +
|
||||||
// this one may be added or not depends on:
|
// this one may be added or not depends on:
|
||||||
// if all literal values encoded with a single encoding or not
|
// if all literal values encoded with a single encoding or not
|
||||||
'(?:var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};)?' +
|
'(?:var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};)?' +
|
||||||
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\\(\'0x3\'\\);' +
|
'var foo *= *_0x([a-f0-9]){4,6}\\(\'0x0\'\\);' +
|
||||||
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\\(\'0x4\'\\);' +
|
'var bar *= *_0x([a-f0-9]){4,6}\\(\'0x1\'\\);' +
|
||||||
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\\(\'0x5\'\\);' +
|
'var baz *= *_0x([a-f0-9]){4,6}\\(\'0x2\'\\);'
|
||||||
'}'
|
);
|
||||||
);
|
|
||||||
|
|
||||||
let obfuscatedCode: string;
|
let obfuscatedCode: string;
|
||||||
|
|
||||||
before(() => {
|
before(() => {
|
||||||
const code: string = readFileAsString(__dirname + '/fixtures/intermediate-variables-count.js');
|
const code: string = readFileAsString(__dirname + '/fixtures/intermediate-variables-count.js');
|
||||||
|
|
||||||
obfuscatedCode = JavaScriptObfuscator.obfuscate(
|
obfuscatedCode = JavaScriptObfuscator.obfuscate(
|
||||||
code,
|
code,
|
||||||
{
|
{
|
||||||
...NO_ADDITIONAL_NODES_PRESET,
|
...NO_ADDITIONAL_NODES_PRESET,
|
||||||
stringArray: true,
|
stringArray: true,
|
||||||
stringArrayEncoding: [
|
stringArrayEncoding: [
|
||||||
StringArrayEncoding.None,
|
StringArrayEncoding.None,
|
||||||
StringArrayEncoding.Base64
|
StringArrayEncoding.Base64
|
||||||
],
|
],
|
||||||
stringArrayIntermediateVariablesCount: 2,
|
stringArrayIntermediateVariablesCount: 2,
|
||||||
stringArrayThreshold: 1
|
stringArrayThreshold: 1
|
||||||
}
|
}
|
||||||
).getObfuscatedCode();
|
).getObfuscatedCode();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should add intermediate variables for both `none` and `base64` string array wrappers', () => {
|
||||||
|
assert.match(obfuscatedCode, stringArrayIntermediateCallRegExp);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Variant #2: function scope', () => {
|
||||||
|
describe('Variant #1: `1` intermediate variable for each encoding type', () => {
|
||||||
|
const stringArrayIntermediateCallRegExp: RegExp = new RegExp(
|
||||||
|
'function test *\\( *\\) *{' +
|
||||||
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};' +
|
||||||
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};' +
|
||||||
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\\(\'0x3\'\\);' +
|
||||||
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\\(\'0x4\'\\);' +
|
||||||
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\\(\'0x5\'\\);' +
|
||||||
|
'}'
|
||||||
|
);
|
||||||
|
|
||||||
|
let obfuscatedCode: string;
|
||||||
|
|
||||||
|
before(() => {
|
||||||
|
const code: string = readFileAsString(__dirname + '/fixtures/intermediate-variables-count.js');
|
||||||
|
|
||||||
|
obfuscatedCode = JavaScriptObfuscator.obfuscate(
|
||||||
|
code,
|
||||||
|
{
|
||||||
|
...NO_ADDITIONAL_NODES_PRESET,
|
||||||
|
stringArray: true,
|
||||||
|
stringArrayEncoding: [
|
||||||
|
StringArrayEncoding.None,
|
||||||
|
StringArrayEncoding.Base64
|
||||||
|
],
|
||||||
|
stringArrayIntermediateVariablesCount: 1,
|
||||||
|
stringArrayThreshold: 1
|
||||||
|
}
|
||||||
|
).getObfuscatedCode();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should add intermediate variables for both `none` and `base64` string array wrappers', () => {
|
||||||
|
assert.match(obfuscatedCode, stringArrayIntermediateCallRegExp);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should add intermediate variables for both `none` and `base64` string array wrappers', () => {
|
describe('Variant #2: `2` intermediate variables for each encoding type', () => {
|
||||||
assert.match(obfuscatedCode, stringArrayIntermediateCallRegExp);
|
const stringArrayIntermediateCallRegExp: RegExp = new RegExp(
|
||||||
|
'function test *\\( *\\) *{' +
|
||||||
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};' +
|
||||||
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};' +
|
||||||
|
// this one may be added or not depends on:
|
||||||
|
// if all literal values encoded with a single encoding or not
|
||||||
|
'(?:var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4};)?' +
|
||||||
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\\(\'0x3\'\\);' +
|
||||||
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\\(\'0x4\'\\);' +
|
||||||
|
'var _0x([a-f0-9]){4,6} *= *_0x([a-f0-9]){4,6}\\(\'0x5\'\\);' +
|
||||||
|
'}'
|
||||||
|
);
|
||||||
|
|
||||||
|
let obfuscatedCode: string;
|
||||||
|
|
||||||
|
before(() => {
|
||||||
|
const code: string = readFileAsString(__dirname + '/fixtures/intermediate-variables-count.js');
|
||||||
|
|
||||||
|
obfuscatedCode = JavaScriptObfuscator.obfuscate(
|
||||||
|
code,
|
||||||
|
{
|
||||||
|
...NO_ADDITIONAL_NODES_PRESET,
|
||||||
|
stringArray: true,
|
||||||
|
stringArrayEncoding: [
|
||||||
|
StringArrayEncoding.None,
|
||||||
|
StringArrayEncoding.Base64
|
||||||
|
],
|
||||||
|
stringArrayIntermediateVariablesCount: 2,
|
||||||
|
stringArrayThreshold: 1
|
||||||
|
}
|
||||||
|
).getObfuscatedCode();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should add intermediate variables for both `none` and `base64` string array wrappers', () => {
|
||||||
|
assert.match(obfuscatedCode, stringArrayIntermediateCallRegExp);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user