sanex3339 5 лет назад
Родитель
Сommit
53532e7095

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/index.browser.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/index.cli.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/index.js


+ 1 - 1
src/node-transformers/obfuscating-transformers/VariableDeclarationTransformer.ts

@@ -222,7 +222,7 @@ export class VariableDeclarationTransformer extends AbstractNodeTransformer {
                     const properties: ESTree.Property[] = node.properties;
 
                     for (const property of properties) {
-                        if (property.computed) {
+                        if (property.computed || !property.shorthand) {
                             continue;
                         }
 

+ 2 - 2
test/dev/dev.ts

@@ -8,8 +8,8 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo
     let obfuscatedCode: string = JavaScriptObfuscator.obfuscate(
         `
             (function () {
-                var a, b;
-                ({a, b} = {a: 1, b: 2});
+                var a = 'a', b = 'b';
+                ({[a]: a, [b]: b} = {a: 1, b: 2});
             
                 console.log(a, b);
             })();

+ 38 - 2
test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/VariableDeclarationTransformer.spec.ts

@@ -606,7 +606,7 @@ describe('VariableDeclarationTransformer', () => {
         });
     });
 
-    describe('Variant #18: destructing assignment without declaration', () => {
+    describe('Variant #18: destructing assignment without declaration #1', () => {
         const variablesDeclaration: RegExp = /var *a, *b, *_0x[a-f0-9]{4,6};/;
         const destructingAssignmentRegExp: RegExp = /\({ *a, *b *} *= *{ *'a' *: *0x1, *'b' *: *0x2 *}\);/;
         const identifierAssignmentRegExp: RegExp = /_0x[a-f0-9]{4,6} *= *0x3;/;
@@ -615,7 +615,43 @@ describe('VariableDeclarationTransformer', () => {
         let obfuscatedCode: string;
 
         before(() => {
-            const code: string = readFileAsString(__dirname + '/fixtures/destructing-assignment-without-declaration.js');
+            const code: string = readFileAsString(__dirname + '/fixtures/destructing-assignment-without-declaration-1.js');
+
+            obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                code,
+                {
+                    ...NO_ADDITIONAL_NODES_PRESET
+                }
+            ).getObfuscatedCode();
+        });
+
+        it('match #1: should transform variables declaration', () => {
+            assert.match(obfuscatedCode, variablesDeclaration);
+        });
+
+        it('match #2: should transform destructing assignment without declaration', () => {
+            assert.match(obfuscatedCode, destructingAssignmentRegExp);
+        });
+
+        it('match #3: should transform identifier assignment', () => {
+            assert.match(obfuscatedCode, identifierAssignmentRegExp);
+        });
+
+        it('match #4: should transform variables usage', () => {
+            assert.match(obfuscatedCode, variablesUsageRegExp);
+        });
+    });
+
+    describe('Variant #19: destructing assignment without declaration #2', () => {
+        const variablesDeclaration: RegExp = /var *_0x[a-f0-9]{4,6} *= *'a', *_0x[a-f0-9]{4,6} *= *'b', *_0x[a-f0-9]{4,6};/;
+        const destructingAssignmentRegExp: RegExp = /\({ *\[_0x[a-f0-9]{4,6}]: *_0x[a-f0-9]{4,6}, *\[_0x[a-f0-9]{4,6}]: *_0x[a-f0-9]{4,6} *} *= *{ *'a' *: *0x1, *'b' *: *0x2 *}\);/;
+        const identifierAssignmentRegExp: RegExp = /_0x[a-f0-9]{4,6} *= *0x3;/;
+        const variablesUsageRegExp: RegExp = /console\['log']\(_0x[a-f0-9]{4,6}, *_0x[a-f0-9]{4,6}, *_0x[a-f0-9]{4,6}\);/;
+
+        let obfuscatedCode: string;
+
+        before(() => {
+            const code: string = readFileAsString(__dirname + '/fixtures/destructing-assignment-without-declaration-2.js');
 
             obfuscatedCode = JavaScriptObfuscator.obfuscate(
                 code,

+ 0 - 0
test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/destructing-assignment-without-declaration.js → test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/destructing-assignment-without-declaration-1.js


+ 7 - 0
test/functional-tests/node-transformers/obfuscating-transformers/variable-declaration-transformer/fixtures/destructing-assignment-without-declaration-2.js

@@ -0,0 +1,7 @@
+(function () {
+    var a = 'a', b = 'b', c;
+    ({[a]: a, [b]: b} = {a: 1, b: 2});
+    c = 3;
+
+    console.log(a, b, c);
+})();

Некоторые файлы не были показаны из-за большого количества измененных файлов