Browse Source

boolan values to JSFuck convert

sanex3339 9 years ago
parent
commit
9e34d82bd5

+ 12 - 10
src/node-obfuscators/LiteralObfuscator.js

@@ -10,22 +10,24 @@ class LiteralObfuscator extends NodeObfuscator_1.NodeObfuscator {
         if (literalNode['x-verbatim-property']) {
             return;
         }
+        let content;
         switch (typeof literalNode.value) {
-            case 'string':
-                literalNode['x-verbatim-property'] = {
-                    content: this.replaceLiteralStringByArrayElement(literalNode.value),
-                    precedence: escodegen.Precedence.Primary
-                };
+            case 'boolean':
+                content = this.replaceLiteralBooleanByJSFuck(literalNode.value);
                 break;
             case 'number':
-                literalNode['x-verbatim-property'] = {
-                    content: this.replaceLiteralNumberByHexadecimalValue(literalNode.value),
-                    precedence: escodegen.Precedence.Primary
-                };
+                content = this.replaceLiteralNumberByHexadecimalValue(literalNode.value);
                 break;
-            default:
+            case 'string':
+                content = this.replaceLiteralStringByArrayElement(literalNode.value);
                 break;
+            default:
+                return;
         }
+        literalNode['x-verbatim-property'] = {
+            content: content,
+            precedence: escodegen.Precedence.Primary
+        };
     }
 }
 exports.LiteralObfuscator = LiteralObfuscator;

+ 17 - 10
src/node-obfuscators/LiteralObfuscator.ts

@@ -20,25 +20,32 @@ export class LiteralObfuscator extends NodeObfuscator {
             return;
         }
 
+        let content: string;
+
         switch (typeof literalNode.value) {
-            case 'string':
-                literalNode['x-verbatim-property'] = {
-                    content : this.replaceLiteralStringByArrayElement(<string>literalNode.value),
-                    precedence: escodegen.Precedence.Primary
-                };
+            case 'boolean':
+                content = this.replaceLiteralBooleanByJSFuck(<boolean>literalNode.value);
 
                 break;
 
             case 'number':
-                literalNode['x-verbatim-property'] = {
-                    content : this.replaceLiteralNumberByHexadecimalValue(<number>literalNode.value),
-                    precedence: escodegen.Precedence.Primary
-                };
+                content = this.replaceLiteralNumberByHexadecimalValue(<number>literalNode.value);
 
                 break;
 
-            default:
+
+            case 'string':
+                content = this.replaceLiteralStringByArrayElement(<string>literalNode.value);
+
                 break;
+
+            default:
+                return;
         }
+
+        literalNode['x-verbatim-property'] = {
+            content : content,
+            precedence: escodegen.Precedence.Primary
+        };
     }
 }

+ 6 - 0
src/node-obfuscators/NodeObfuscator.js

@@ -14,6 +14,12 @@ class NodeObfuscator {
             node.name = namesMap.get(node.name);
         }
     }
+    replaceLiteralBooleanByJSFuck(nodeValue) {
+        if (nodeValue) {
+            return '!![]';
+        }
+        return '![]';
+    }
     replaceLiteralNumberByHexadecimalValue(nodeValue) {
         const prefix = '0x';
         if (!Utils_1.Utils.isInteger(nodeValue)) {

+ 12 - 0
src/node-obfuscators/NodeObfuscator.ts

@@ -42,6 +42,18 @@ export abstract class NodeObfuscator implements INodeObfuscator {
         }
     }
 
+    /**
+     * @param nodeValue
+     * @returns {string}
+     */
+    protected replaceLiteralBooleanByJSFuck (nodeValue: boolean): string {
+        if (nodeValue) {
+            return '!![]';
+        }
+
+        return '![]';
+    }
+
     /**
      * @param nodeValue
      * @returns {string}

+ 1 - 0
tests/dev-test.js

@@ -44,6 +44,7 @@ let obfuscatedCode = index_1.JavaScriptObfuscator.obfuscate(`
         
         test2(22);
         console.log(105.4);
+        console.log(true, false);
     })();
     `, {
     rotateUnicodeArray: false

+ 1 - 0
tests/dev-test.ts

@@ -45,6 +45,7 @@ let obfuscatedCode: string = JavaScriptObfuscator.obfuscate(
         
         test2(22);
         console.log(105.4);
+        console.log(true, false);
     })();
     `,
     {