浏览代码

The `splitStrings` option now correctly splits strings inside objects

sanex3339 5 年之前
父节点
当前提交
3ba3fff62c

+ 4 - 1
CHANGELOG.md

@@ -1,10 +1,13 @@
 Change Log
 Change Log
 
 
+v0.19.2
+---
+* The `splitStrings` option now correctly splits strings inside objects
+
 v0.19.1
 v0.19.1
 ---
 ---
 * The `splitStrings` option now affects template literal strings
 * The `splitStrings` option now affects template literal strings
 
 
-
 v0.19.0
 v0.19.0
 ---
 ---
 * **New option:** `splitStrings` splits literal strings into chunks with length of `splitStringsChunkLength` option value
 * **New option:** `splitStrings` splits literal strings into chunks with length of `splitStringsChunkLength` option value

文件差异内容过多而无法显示
+ 0 - 0
dist/index.browser.js


文件差异内容过多而无法显示
+ 0 - 0
dist/index.cli.js


文件差异内容过多而无法显示
+ 0 - 0
dist/index.js


+ 1 - 1
package.json

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

+ 1 - 1
src/node-transformers/converting-transformers/SplitStringTransformer.ts

@@ -85,7 +85,7 @@ export class SplitStringTransformer extends AbstractNodeTransformer {
             return literalNode;
             return literalNode;
         }
         }
 
 
-        if (NodeGuards.isPropertyNode(parentNode) && !parentNode.computed) {
+        if (NodeGuards.isPropertyNode(parentNode) && !parentNode.computed && parentNode.key === literalNode) {
             return literalNode;
             return literalNode;
         }
         }
 
 

+ 6 - 4
test/dev/dev.ts

@@ -6,16 +6,18 @@ import { NO_ADDITIONAL_NODES_PRESET } from '../../src/options/presets/NoCustomNo
 
 
     let obfuscatedCode: string = JavaScriptObfuscator.obfuscate(
     let obfuscatedCode: string = JavaScriptObfuscator.obfuscate(
         `
         `
-        var n = 'abcefgi';
+        function hi() {
+          console.log("Hello World!");
+        }
+        hi();
         `,
         `,
         {
         {
             ...NO_ADDITIONAL_NODES_PRESET,
             ...NO_ADDITIONAL_NODES_PRESET,
             compact: false,
             compact: false,
             splitStrings: true,
             splitStrings: true,
             splitStringsChunkLength: 4,
             splitStringsChunkLength: 4,
-            stringArray: true,
-            stringArrayThreshold: 1,
-            seed: 1
+            controlFlowFlattening: true,
+            controlFlowFlatteningThreshold: 1
         }
         }
     ).getObfuscatedCode();
     ).getObfuscatedCode();
 
 

+ 4 - 4
test/functional-tests/node-transformers/converting-transformers/split-string-transformer/SplitStringTransformer.spec.ts

@@ -129,9 +129,9 @@ describe('SplitStringTransformer', () => {
         });
         });
     });
     });
 
 
-    describe('Variant #8: object key string literal', () => {
-        it('should keep original string literal', () => {
-            const code: string = readFileAsString(__dirname + '/fixtures/object-key-string-literal.js');
+    describe('Variant #8: object string literal', () => {
+        it('should keep original key string literal and transform value string literal', () => {
+            const code: string = readFileAsString(__dirname + '/fixtures/object-string-literal.js');
 
 
             obfuscatedCode = JavaScriptObfuscator.obfuscate(
             obfuscatedCode = JavaScriptObfuscator.obfuscate(
                 code,
                 code,
@@ -142,7 +142,7 @@ describe('SplitStringTransformer', () => {
                 }
                 }
             ).getObfuscatedCode();
             ).getObfuscatedCode();
 
 
-            assert.match(obfuscatedCode,  /^var *test *= *{'abcdefg' *: *0x1};$/);
+            assert.match(obfuscatedCode,  /^var *test *= *{'abcdefg' *: *'ab' *\+ *'cd' *\+ *'ef' *\+ *'g'};$/);
         });
         });
     });
     });
 
 

+ 0 - 3
test/functional-tests/node-transformers/converting-transformers/split-string-transformer/fixtures/object-key-string-literal.js

@@ -1,3 +0,0 @@
-var test = {
-    'abcdefg': 1
-};

+ 3 - 0
test/functional-tests/node-transformers/converting-transformers/split-string-transformer/fixtures/object-string-literal.js

@@ -0,0 +1,3 @@
+var test = {
+    'abcdefg': 'abcdefg'
+};

部分文件因为文件数量过多而无法显示