Jelajahi Sumber

0.18.1 version

sanex3339 6 tahun lalu
induk
melakukan
f36a166174

+ 4 - 0
CHANGELOG.md

@@ -1,5 +1,9 @@
 Change Log
 ===
+v0.18.2
+---
+* Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/320
+
 v0.18.1
 ---
 * Fixed https://github.com/javascript-obfuscator/javascript-obfuscator/issues/317

File diff ditekan karena terlalu besar
+ 0 - 0
dist/index.browser.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/index.cli.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/index.js


+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "javascript-obfuscator",
-  "version": "0.18.1",
+  "version": "0.18.2",
   "description": "JavaScript obfuscator",
   "keywords": [
     "obfuscator",

+ 8 - 0
src/node-transformers/converting-transformers/properties-extractors/AbstractPropertiesExtractor.ts

@@ -70,6 +70,14 @@ export abstract class AbstractPropertiesExtractor implements IPropertiesExtracto
         return null;
     }
 
+    /**
+     * @param {Node} node
+     * @returns {propertyValueNode is Pattern}
+     */
+    protected static isProhibitedHostParent (node: ESTree.Node): node is ESTree.Pattern {
+        return NodeGuards.isMemberExpressionNode(node);
+    }
+
     /**
      * @param {Node} node
      * @returns {propertyValueNode is Pattern}

+ 6 - 0
src/node-transformers/converting-transformers/properties-extractors/AssignmentExpressionPropertiesExtractor.ts

@@ -30,6 +30,7 @@ export class AssignmentExpressionPropertiesExtractor extends AbstractPropertiesE
         objectExpressionNode: ESTree.ObjectExpression,
         hostNode: ESTree.AssignmentExpression
     ): ESTree.Node {
+        const hostParentNode: ESTree.Node | undefined = hostNode.parentNode;
         const leftNode: ESTree.MemberExpression | ESTree.Pattern = hostNode.left;
 
         // left node shouldn't be as Pattern node
@@ -37,6 +38,11 @@ export class AssignmentExpressionPropertiesExtractor extends AbstractPropertiesE
             return objectExpressionNode;
         }
 
+        // left node shouldn't be as Pattern node
+        if (hostParentNode && AbstractPropertiesExtractor.isProhibitedHostParent(hostParentNode)) {
+            return objectExpressionNode;
+        }
+
         return this.transformObjectExpressionNode(
             objectExpressionNode,
             leftNode

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

@@ -126,7 +126,7 @@ export class FunctionTransformer extends AbstractNodeTransformer {
      */
     private isGlobalFunctionDeclarationIdentifier (node: ESTree.Identifier, parentNode: ESTree.Node): boolean {
         if (!NodeGuards.isFunctionDeclarationNode(parentNode) || parentNode.id !== node) {
-            return false
+            return false;
         }
 
         const lexicalScopeNode: TNodeWithLexicalScope | undefined = NodeLexicalScopeUtils.getLexicalScopes(parentNode)[1];

+ 2 - 4
test/dev/dev.ts

@@ -6,10 +6,8 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo
 
     let obfuscatedCode: string = JavaScriptObfuscator.obfuscate(
         `
-        function foo (foo) {}
-
-        new foo();
-
+        var n;
+        (n = {foo: 'bar'}).baz = n.foo;
         `,
         {
             ...NO_ADDITIONAL_NODES_PRESET,

+ 26 - 0
test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/ObjectExpressionKeysTransformer.spec.ts

@@ -519,5 +519,31 @@ describe('ObjectExpressionKeysTransformer', () => {
                 });
             });
         });
+
+        describe('Variant #4: assignment expression and member expression', () => {
+            const match: string = `` +
+                `var ${variableMatch}; *` +
+                `\\(${variableMatch} *= *{'foo': *'bar'}\\)\\['baz'] *= *${variableMatch}\\['foo'];` +
+            ``;
+            const regExp: RegExp = new RegExp(match);
+
+            let obfuscatedCode: string;
+
+            before(() => {
+                const code: string = readFileAsString(__dirname + '/fixtures/assignment-expression-and-member-expression.js');
+
+                obfuscatedCode = JavaScriptObfuscator.obfuscate(
+                    code,
+                    {
+                        ...NO_ADDITIONAL_NODES_PRESET,
+                        transformObjectKeys: true
+                    }
+                ).getObfuscatedCode();
+            });
+
+            it('shouldn\'t transform object keys', () => {
+                assert.match(obfuscatedCode,  regExp);
+            });
+        });
     });
 });

+ 4 - 0
test/functional-tests/node-transformers/converting-transformers/object-expression-keys-transformer/fixtures/assignment-expression-and-member-expression.js

@@ -0,0 +1,4 @@
+(function(){
+    var n;
+    (n = {foo: 'bar'}).baz = n.foo;
+})();

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini