From 3230804d5fd391afa012280013b3f827282f4623 Mon Sep 17 00:00:00 2001 From: sanex3339 Date: Sat, 21 May 2016 15:10:19 +0300 Subject: [PATCH] literal int number values to hex convert --- src/Utils.js | 3 +++ src/Utils.ts | 12 ++++++++++++ src/node-obfuscators/NodeObfuscator.js | 3 +++ src/node-obfuscators/NodeObfuscator.ts | 4 ++++ tests/dev-test.js | 1 + tests/dev-test.ts | 1 + 6 files changed, 24 insertions(+) diff --git a/src/Utils.js b/src/Utils.js index a3a50769..8b09d938 100644 --- a/src/Utils.js +++ b/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; } diff --git a/src/Utils.ts b/src/Utils.ts index 7c975ec8..7c86a774 100644 --- a/src/Utils.ts +++ b/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 (obj: T): T { return obj; } diff --git a/src/node-obfuscators/NodeObfuscator.js b/src/node-obfuscators/NodeObfuscator.js index 468a7981..a250537e 100644 --- a/src/node-obfuscators/NodeObfuscator.js +++ b/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) { diff --git a/src/node-obfuscators/NodeObfuscator.ts b/src/node-obfuscators/NodeObfuscator.ts index 1b024086..83537e98 100644 --- a/src/node-obfuscators/NodeObfuscator.ts +++ b/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)}`; } diff --git a/tests/dev-test.js b/tests/dev-test.js index 259f2433..604eb228 100644 --- a/tests/dev-test.js +++ b/tests/dev-test.js @@ -43,6 +43,7 @@ let obfuscatedCode = index_1.JavaScriptObfuscator.obfuscate(` }; test2(22); + console.log(105.4); })(); `, { rotateUnicodeArray: false diff --git a/tests/dev-test.ts b/tests/dev-test.ts index 6c1cc2e5..f7926434 100644 --- a/tests/dev-test.ts +++ b/tests/dev-test.ts @@ -44,6 +44,7 @@ let obfuscatedCode: string = JavaScriptObfuscator.obfuscate( }; test2(22); + console.log(105.4); })(); `, {