Browse Source

Sync with dev

sanex3339 5 years ago
parent
commit
196c6a022b

File diff suppressed because it is too large
+ 0 - 0
dist/index.browser.js


File diff suppressed because it is too large
+ 0 - 0
dist/index.cli.js


File diff suppressed because it is too large
+ 0 - 0
dist/index.js


+ 4 - 2
src/node-transformers/obfuscating-transformers/ImportDeclarationTransformer.ts

@@ -141,8 +141,10 @@ export class ImportDeclarationTransformer extends AbstractNodeTransformer {
             const newReplaceableIdentifier: ESTree.Identifier = this.identifierObfuscatingReplacer
             const newReplaceableIdentifier: ESTree.Identifier = this.identifierObfuscatingReplacer
                 .replace(replaceableIdentifier.name, lexicalScopeNode);
                 .replace(replaceableIdentifier.name, lexicalScopeNode);
 
 
-            replaceableIdentifier.name = newReplaceableIdentifier.name;
-            NodeMetadata.set(replaceableIdentifier, { renamedIdentifier: true });
+            if (replaceableIdentifier.name !== newReplaceableIdentifier.name) {
+                replaceableIdentifier.name = newReplaceableIdentifier.name;
+                NodeMetadata.set(replaceableIdentifier, { renamedIdentifier: true });
+            }
         });
         });
     }
     }
 
 

+ 32 - 0
test/functional-tests/node-transformers/obfuscating-transformers/impot-declaration-transformer/ImportDeclarationTransformer.spec.ts

@@ -141,5 +141,37 @@ describe('ImportDeclarationTransformer', () => {
                 assert.equal(importSpecifierIdentifier, consoleLogIdentifier);
                 assert.equal(importSpecifierIdentifier, consoleLogIdentifier);
             });
             });
         });
         });
+
+        describe('Variant #5: Issue-360, prevent of set `renamedIdentifier` metadata property of all traversed identifiers', () => {
+            const importSpecifierRegExp1: RegExp = /import _0x[a-f0-9]{4,6} *from *'foo';/;
+            const importSpecifierRegExp2: RegExp = /import _0x[a-f0-9]{4,6} *from *'bar';/;
+            const variableDeclarationIdentifierRegExp: RegExp = /const _0x[a-f0-9]{4,6} *= *0x1;/;
+
+            let obfuscatedCode: string;
+
+            before(() => {
+                const code: string = readFileAsString(__dirname + '/fixtures/no-invalid-mark-as-renamed-identifier.js');
+
+                obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                    code,
+                    {
+                        ...NO_ADDITIONAL_NODES_PRESET,
+                        renameGlobals: true
+                    }
+                ).getObfuscatedCode();
+            });
+
+            it('Match 1: should transform first import specifier identifier name', () => {
+                assert.match(obfuscatedCode, importSpecifierRegExp1);
+            });
+
+            it('Match 2: should transform second import specifier identifier name', () => {
+                assert.match(obfuscatedCode, importSpecifierRegExp2);
+            });
+
+            it('Match 3: should transform variable declaration identifier name', () => {
+                assert.match(obfuscatedCode, variableDeclarationIdentifierRegExp);
+            });
+        });
     });
     });
 });
 });

+ 4 - 0
test/functional-tests/node-transformers/obfuscating-transformers/impot-declaration-transformer/fixtures/no-invalid-mark-as-renamed-identifier.js

@@ -0,0 +1,4 @@
+import foo from 'foo';
+import bar from 'bar';
+
+const baz = 1;

Some files were not shown because too many files changed in this diff