8000 Merge pull request #506 from javascript-obfuscator/optional-catch-bin… · sec-js/javascript-obfuscator@7ba1ed3 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7ba1ed3

Browse files
authored
Merge pull request javascript-obfuscator#506 from javascript-obfuscator/optional-catch-binding
Optional catch binding support and super class expression parenthesis support
2 parents 923643b + 1d4ab4c commit 7ba1ed3

File tree

10 files changed

+74
-20
lines changed

10 files changed

+74
-20
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
Change Log
22

3+
v0.23.2
4+
---
5+
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/475
6+
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/326
7+
38
v0.23.1
49
---
510
* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/498

dist/index.browser.js

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.cli.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "javascript-obfuscator",
3-
"version": "0.23.1",
3+
"version": "0.23.2",
44
"description": "JavaScript obfuscator",
55
"keywords": [
66
"obfuscator",
@@ -28,7 +28,7 @@
2828
"chance": "1.1.4",
2929
"class-validator": "0.11.0",
3030
"commander": "4.1.0",
31-
"escodegen": "1.12.1",
31+
"escodegen": "1.13.0",
3232
"estraverse": "4.3.0",
3333
"eventemitter3": "4.0.0",
3434
"inversify": "5.0.1",

test/functional-tests/node-transformers/obfuscating-transformers/catch-clause-transformer/CatchClauseTransformer.spec.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { JavaScriptObfuscator } from '../../../../../src/JavaScriptObfuscatorFac
1010
describe('CatchClauseTransformer', () => {
1111
let obfuscatedCode: string;
1212

13-
describe('transformNode', () => {
13+
describe('Variant #1: base transform of catch clause parameter', () => {
1414
const paramNameRegExp: RegExp = /catch *\((_0x([a-f0-9]){4,6})\) *\{/;
1515
const bodyParamNameRegExp: RegExp = /console\['log'\]\((_0x([a-f0-9]){4,6})\);/;
1616

@@ -43,7 +43,7 @@ describe('CatchClauseTransformer', () => {
4343
});
4444
});
4545

46-
describe('object pattern as parameter', () => {
46+
describe('Variant #2: object pattern as parameter', () => {
4747
const functionParameterMatch: RegExp = /\} *catch *\(\{ *name *\}\) *\{/;
4848
const functionBodyMatch: RegExp = /return *name;/;
4949

@@ -66,4 +66,28 @@ describe('CatchClauseTransformer', () => {
6666
assert.match(obfuscatedCode, functionBodyMatch);
6767
});
6868
});
69+
70+
describe('Variant #3: optional catch binding support', () => {
71+
const optionalCatchClauseRegExp: RegExp = /} *catch *\{/;
72+
const bodyParamNameRegExp: RegExp = /console\['log'\]\(0x1\);/;
73+
74+
before(() => {
75+
const code: string = readFileAsString(__dirname + '/fixtures/optional-catch-binding.js');
76+
77+
obfuscatedCode = JavaScriptObfuscator.obfuscate(
78+
code,
79+
{
80+
...NO_ADDITIONAL_NODES_PRESET
81+
}
82+
).getObfuscatedCode();
83+
});
84+
85+
it('match #1: should transform catch clause node', () => {
86+
assert.match(obfuscatedCode, optionalCatchClauseRegExp);
87+
});
88+
89+
it('match #2: should transform catch clause node', () => {
90+
assert.match(obfuscatedCode, bodyParamNameRegExp);
91+
});
92+
});
6993
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
try {
2+
3+
} catch {
4+
console.log(1);
5+
}

test/functional-tests/node-transformers/obfuscating-transformers/class-declaration-transformer/ClassDeclarationTransformer.spec.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,5 +217,26 @@ describe('ClassDeclarationTransformer', () => {
217217
assert.match(obfuscatedCode, defaultExportRegExp);
218218
});
219219
});
220+
221+
describe('Variant #8: super class expression parenthesis', () => {
222+
const defaultExportRegExp: RegExp = /class Baz extends *\(Foo *\|| *Bar\) *{}/;
223+
224+
let obfuscatedCode: string;
225+
226+
before(() => {
227+
const code: string = readFileAsString(__dirname + '/fixtures/super-class-expression-parenthesis.js');
228+
229+
obfuscatedCode = JavaScriptObfuscator.obfuscate(
230+
code,
231+
{
232+
...NO_ADDITIONAL_NODES_PRESET
233+
}
234+
).getObfuscatedCode();
235+
});
236+
237+
it('Match #1: should keep super class expression parenthesis', () => {
238+
assert.match(obfuscatedCode, defaultExportRegExp);
239+
});
240+
});
220241
});
221242
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
class Foo {}
2+
class Bar {}
3+
class Baz extends (Foo || Bar) {}
4+

yarn.lock

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1577,12 +1577,12 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5:
15771577
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
15781578
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
15791579

1580-
escodegen@1.12.1:
1581-
version "1.12.1"
1582-
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.1.tgz#08770602a74ac34c7a90ca9229e7d51e379abc76"
1583-
integrity sha512-Q8t2YZ+0e0pc7NRVj3B4tSQ9rim1oi4Fh46k2xhJ2qOiEwhQfdjyEQddWdj7ZFaKmU+5104vn1qrcjEPWq+bgQ==
1580+
escodegen@1.13.0:
1581+
version "1.13.0"
1582+
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.13.0.tgz#c7adf9bd3f3cc675bb752f202f79a720189cab29"
1583+
integrity sha512-eYk2dCkxR07DsHA/X2hRBj0CFAZeri/LyDMc0C8JT1Hqi6JnVpMhJ7XFITbb0+yZS3lVkaPL2oCkZ3AVmeVbMw==
15841584
dependencies:
1585-
esprima "^3.1.3"
1585+
esprima "^4.0.1"
15861586
estraverse "^4.2.0"
15871587
esutils "^2.0.2"
15881588
optionator "^0.8.1"
@@ -1602,12 +1602,7 @@ esm@^3.2.25:
16021602
resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10"
16031603
integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==
16041604

1605-
esprima@^3.1.3:
1606-
version "3.1.3"
1607-
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
1608-
integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=
1609-
1610-
esprima@^4.0.0:
1605+
esprima@^4.0.0, esprima@^4.0.1:
16111606
version "4.0.1"
16121607
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
16131608
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==

0 commit comments

Comments
 (0)
0