New option ignoreRequireImports prevents obfuscation of require imports

This commit is contained in:
sanex
2020-11-07 11:49:48 +03:00
parent 0c13f96f68
commit 8ae8e0b50b
19 changed files with 171 additions and 20 deletions
@@ -0,0 +1,67 @@
import { assert } from 'chai';
import { JavaScriptObfuscator } from '../../../../../../src/JavaScriptObfuscatorFacade';
import { NO_ADDITIONAL_NODES_PRESET } from '../../../../../../src/options/presets/NoCustomNodes';
import { readFileAsString } from '../../../../../helpers/readFileAsString';
describe('IgnoredRequireImportObfuscatingGuard', () => {
describe('check', () => {
describe('`ignoreRequireImports` option is enabled', () => {
const obfuscatingGuardRegExp: RegExp = new RegExp(
'const foo *= *require\\(\'\\./foo\'\\); *' +
'import _0x(?:[a-f0-9]){4,6} from *\'\\./bar\'; *' +
'const baz *= *_0x(?:[a-f0-9]){4,6}\\(\'0x0\'\\);'
);
let obfuscatedCode: string;
beforeEach(() => {
const code: string = readFileAsString(__dirname + '/fixtures/base-behaviour.js');
obfuscatedCode = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
ignoreRequireImports: true,
stringArray: true,
stringArrayThreshold: 1
}
).getObfuscatedCode();
});
it('match #1: shouldn\'t obfuscate require import', () => {
assert.match(obfuscatedCode, obfuscatingGuardRegExp);
});
});
describe('`ignoreRequireImports` option is disabled', () => {
const obfuscatingGuardRegExp: RegExp = new RegExp(
'const foo *= *require\\(_0x(?:[a-f0-9]){4,6}\\(\'0x0\'\\)\\); *' +
'import _0x(?:[a-f0-9]){4,6} from *\'\\./bar\'; *' +
'const baz *= *_0x(?:[a-f0-9]){4,6}\\(\'0x1\'\\);'
);
let obfuscatedCode: string;
beforeEach(() => {
const code: string = readFileAsString(__dirname + '/fixtures/base-behaviour.js');
obfuscatedCode = JavaScriptObfuscator.obfuscate(
code,
{
...NO_ADDITIONAL_NODES_PRESET,
ignoreRequireImports: false,
stringArray: true,
stringArrayThreshold: 1
}
).getObfuscatedCode();
});
it('match #1: should obfuscate require import', () => {
assert.match(obfuscatedCode, obfuscatingGuardRegExp);
});
});
});
});
@@ -0,0 +1,3 @@
const foo = require('./foo');
import bar from './bar';
const baz = 'baz';
+1
View File
@@ -102,6 +102,7 @@ import './functional-tests/node-transformers/preparing-transformers/eval-call-ex
import './functional-tests/node-transformers/preparing-transformers/obfuscating-guards/black-list-obfuscating-guard/BlackListObfuscatingGuard.spec';
import './functional-tests/node-transformers/preparing-transformers/obfuscating-guards/conditional-comment-obfuscating-guard/ConditionalCommentObfuscatingGuard.spec';
import './functional-tests/node-transformers/preparing-transformers/obfuscating-guards/force-transform-string-obfuscating-guard/ForceTransformStringObfuscatingGuard.spec';
import './functional-tests/node-transformers/preparing-transformers/obfuscating-guards/ignored-require-import-obfuscating-guard/IgnoredRequireImportObfuscatingGuard.spec';
import './functional-tests/node-transformers/preparing-transformers/obfuscating-guards/reserved-string-obfuscating-guard/ReservedStringObfuscatingGuard.spec';
import './functional-tests/node-transformers/preparing-transformers/variable-preserve-transformer/VariablePreserveTransformer.spec';
import './functional-tests/node-transformers/rename-identifiers-transformers/identifier-replacer/IdentifierReplacer.spec';