Browse Source

literal int number values to hex convert

sanex3339 9 years ago
parent
commit
3230804d5f

+ 3 - 0
src/Utils.js

@@ -30,6 +30,9 @@ class Utils {
         const rangeMinInteger = 10000, rangeMaxInteger = 99999999, prefix = '_0x';
         return `${prefix}${(Utils.decToHex(Utils.getRandomInteger(rangeMinInteger, rangeMaxInteger))).substr(0, length)}`;
     }
+    static isInteger(number) {
+        return number % 1 === 0;
+    }
     static strEnumify(obj) {
         return obj;
     }

+ 12 - 0
src/Utils.ts

@@ -69,6 +69,18 @@ export class Utils {
         return `${prefix}${(Utils.decToHex(Utils.getRandomInteger(rangeMinInteger, rangeMaxInteger))).substr(0, length)}`;
     }
 
+    /**
+     * @param number
+     * @returns {boolean}
+     */
+    public static isInteger (number: number): boolean {
+        return number % 1 === 0;
+    }
+
+    /**
+     * @param obj
+     * @returns {T}
+     */
     public static strEnumify <T extends { [prop: string]: '' | string }> (obj: T): T {
         return obj;
     }

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

@@ -16,6 +16,9 @@ class NodeObfuscator {
     }
     replaceLiteralNumberByHexadecimalValue(nodeValue) {
         const prefix = '0x';
+        if (!Utils_1.Utils.isInteger(nodeValue)) {
+            return String(nodeValue);
+        }
         return `${prefix}${Utils_1.Utils.decToHex(nodeValue)}`;
     }
     replaceLiteralStringByArrayElement(nodeValue) {

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

@@ -49,6 +49,10 @@ export abstract class NodeObfuscator implements INodeObfuscator {
     protected replaceLiteralNumberByHexadecimalValue (nodeValue: number): string {
         const prefix: string = '0x';
 
+        if (!Utils.isInteger(nodeValue)) {
+            return String(nodeValue);
+        }
+
         return `${prefix}${Utils.decToHex(nodeValue)}`;
     }
 

+ 1 - 0
tests/dev-test.js

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

+ 1 - 0
tests/dev-test.ts

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