|
@@ -1,15 +1,20 @@
|
|
# JavaScript obfuscator for Node.js
|
|
# JavaScript obfuscator for Node.js
|
|
|
|
|
|
-JavaScript obfuscator for Node.js is a free alternative of [js-obfuscator](https://github.com/caiguanhao/js-obfuscator) (which uses [javascriptobfuscator.com](https://javascriptobfuscator.com/Javascript-Obfuscator.aspx)) without any limits and sending data to a server.
|
|
|
|
-Compatible with ES6.
|
|
|
|
-Tested on Angular2 bundle.
|
|
|
|
|
|
+JavaScript obfuscator for Node.js is a free alternative to [js-obfuscator](https://github.com/caiguanhao/js-obfuscator) (which uses [javascriptobfuscator.com](https://javascriptobfuscator.com/Javascript-Obfuscator.aspx))
|
|
|
|
+
|
|
|
|
+* without any limits and sending data to a server;
|
|
|
|
+* compatible with ES6;
|
|
|
|
+* tested on Angular2 bundle;
|
|
|
|
+
|
|
https://gist.github.com/sanex3339/ffc2876123b52e6d11ce45369fd53acf
|
|
https://gist.github.com/sanex3339/ffc2876123b52e6d11ce45369fd53acf
|
|
|
|
|
|
## Installation
|
|
## Installation
|
|
|
|
|
|
-Install the package with NPM and add it to your `devDependencies`:
|
|
|
|
|
|
+Install the package from NPM and add it to your `devDependencies`:
|
|
|
|
|
|
-`npm install --save-dev javascript-obfuscator`
|
|
|
|
|
|
+```sh
|
|
|
|
+$ npm install --save-dev javascript-obfuscator
|
|
|
|
+```
|
|
|
|
|
|
## Usage
|
|
## Usage
|
|
|
|
|
|
@@ -46,12 +51,12 @@ var _0xabf1 = [
|
|
#### `sourceCode`
|
|
#### `sourceCode`
|
|
Type: `string` Default: `null`
|
|
Type: `string` Default: `null`
|
|
|
|
|
|
-Any valid SourceCode.
|
|
|
|
|
|
+Any valid source code.
|
|
|
|
|
|
#### `options`
|
|
#### `options`
|
|
Type: `Object` Default: `null`
|
|
Type: `Object` Default: `null`
|
|
|
|
|
|
-Options for JavaScript obfuscator:
|
|
|
|
|
|
+Options for the JavaScript obfuscator:
|
|
|
|
|
|
```javascript
|
|
```javascript
|
|
{
|
|
{
|
|
@@ -64,47 +69,46 @@ Options for JavaScript obfuscator:
|
|
#### `compact`
|
|
#### `compact`
|
|
Type: `boolean` Default: `true`
|
|
Type: `boolean` Default: `true`
|
|
|
|
|
|
-Compact code output into one line.
|
|
|
|
|
|
+Compact code output one one line.
|
|
|
|
|
|
#### `debugProtection`
|
|
#### `debugProtection`
|
|
Type: `boolean` Default: `false`
|
|
Type: `boolean` Default: `false`
|
|
|
|
|
|
-##### :warning: This option can cause browser freeze while Developer Tools is enabled! Use at own risk.
|
|
|
|
|
|
+##### :warning: Can freeze browser while Developer Tools are enabled! Use at own risk.
|
|
|
|
|
|
-Force enable debug mode in some browsers (mainly based on WebKit) on page load if Developer Tools panel is enabled.
|
|
|
|
-With this options using of Debug panel is impossible.
|
|
|
|
|
|
+Force enable debug mode on page load if Developer Tools panel is enabled (in some, mainly WebKit-based, browsers). This makes it almost impossible to use the Console (the debug panel).
|
|
|
|
|
|
-WebKit-based browsers: blocks the site window, but you still can navigate through Developer Tools panel.
|
|
|
|
-Firefox: does *not* block the site window, but you still can't use Debug panel.
|
|
|
|
|
|
+* WebKit-based: blocks the site window, but you still can navigate through Developer Tools panel.
|
|
|
|
+* Firefox: does *not* block the site window, but still won't let you use DevTools.
|
|
|
|
|
|
#### `debugProtectionInterval`
|
|
#### `debugProtectionInterval`
|
|
Type: `boolean` Default: `false`
|
|
Type: `boolean` Default: `false`
|
|
|
|
|
|
-##### :warning: This option can cause browser freeze even while Developer Tools is disabled! Use at own risk.
|
|
|
|
|
|
+##### :warning: Can freeze browser even while Developer Tools are disabled! Use at own risk.
|
|
|
|
|
|
Works if `debugProtection` is enabled.
|
|
Works if `debugProtection` is enabled.
|
|
|
|
|
|
-Force enable debug mode in some browsers (mainly based on WebKit) when Developer Tools panel was enabled, even after page was loaded.
|
|
|
|
|
|
+Force enable debug mode in some browsers (mainly WebKit-based) when Developer Tools panel is enabled, even after page is loaded.
|
|
|
|
|
|
#### `disableConsoleOutput`
|
|
#### `disableConsoleOutput`
|
|
Type: `boolean` Default: `true`
|
|
Type: `boolean` Default: `true`
|
|
|
|
|
|
-Disable `console.log`, `console.info`, `console.error` and `console.warn` messages output into browser console.
|
|
|
|
|
|
+Disable `console.log`, `console.info`, `console.error` and `console.warn` messages output into the browser console.
|
|
|
|
|
|
#### `encodeUnicodeLiterals`
|
|
#### `encodeUnicodeLiterals`
|
|
Type: `boolean` Default: `false`
|
|
Type: `boolean` Default: `false`
|
|
|
|
|
|
##### :warning: `unicodeArray` option must be enabled
|
|
##### :warning: `unicodeArray` option must be enabled
|
|
|
|
|
|
-This option can slightly slowdown your code speed.
|
|
|
|
|
|
+This option can slightly slow down your code speed.
|
|
|
|
|
|
-All literals in unicode array becomes encoded in Base64.
|
|
|
|
-To decode strings, special function will be inserted on page under `unicodeArray` node.
|
|
|
|
|
|
+All literals in Unicode array become encoded in Base64.
|
|
|
|
+To decode strings, a special function will be inserted on the page under `unicodeArray` node.
|
|
|
|
|
|
#### `reservedNames`
|
|
#### `reservedNames`
|
|
Type: `string[]` Default: `[]`
|
|
Type: `string[]` Default: `[]`
|
|
|
|
|
|
-Disable obfuscation of variable names, function names and names of function parameters that match with given RegExp pattern.
|
|
|
|
|
|
+Disable obfuscation of variable names, function names and names of function parameters that match the passed RegExp pattern.
|
|
|
|
|
|
Example:
|
|
Example:
|
|
```javascript
|
|
```javascript
|
|
@@ -119,37 +123,35 @@ Example:
|
|
#### `rotateUnicodeArray`
|
|
#### `rotateUnicodeArray`
|
|
Type: `boolean` Default: `true`
|
|
Type: `boolean` Default: `true`
|
|
|
|
|
|
-##### :warning: `unicodeArray` option must be enabled
|
|
|
|
|
|
+##### :warning: `unicodeArray` must be enabled
|
|
|
|
|
|
-This option will rotate all values inside `unicodeArray` on a random value during obfuscation of code, and insert inside source code helper function
|
|
|
|
-which will rotate array values back to their original indexes.
|
|
|
|
|
|
+Shift the `unicodeArray` values by a random number of places during the code obfuscation and insert a helper function for shifting the array back into the source code. (It works just like the Caesar cypher.)
|
|
|
|
|
|
Keep in mind that this option affects only how the code is visually organised, since the original arrays can be easily accessed during the debug process.
|
|
Keep in mind that this option affects only how the code is visually organised, since the original arrays can be easily accessed during the debug process.
|
|
|
|
|
|
-It is also not recommended to enable `rotateUnicodeArray` for small source code, because a helper function might attract attention.
|
|
|
|
|
|
+It is also not recommended to enable `rotateUnicodeArray` for small source code because a helper function might attract attention.
|
|
|
|
|
|
#### `unicodeArray`
|
|
#### `unicodeArray`
|
|
Type: `boolean` Default: `true`
|
|
Type: `boolean` Default: `true`
|
|
|
|
|
|
-Put all literal strings into array and replace every literal string by array call.
|
|
|
|
|
|
+Put all literal strings into an array and replace every literal string by an array call.
|
|
|
|
|
|
-#### unicodeArrayThreshold
|
|
|
|
|
|
+#### `unicodeArrayThreshold`
|
|
Type: `number` Default: `0.8` Min: `0` Max: `1`
|
|
Type: `number` Default: `0.8` Min: `0` Max: `1`
|
|
|
|
|
|
##### :warning: `unicodeArray` option must be enabled
|
|
##### :warning: `unicodeArray` option must be enabled
|
|
|
|
|
|
-Probability that the literal string will inserted into `unicodeArray`.
|
|
|
|
-Use this option for huge source code size, because many calls to `unicodeArray` will slowdown code performance.
|
|
|
|
|
|
+The probability that the literal string will be inserted into `unicodeArray`.
|
|
|
|
+Use this option for huge source code size, because many calls to `unicodeArray` will slow down code performance.
|
|
|
|
|
|
-Value `0` is equals `unicodeArray: false`.
|
|
|
|
|
|
+`unicodeArrayThreshold: 0` equals to `unicodeArray: false`.
|
|
|
|
|
|
#### `wrapUnicodeArrayCalls`
|
|
#### `wrapUnicodeArrayCalls`
|
|
Type: `boolean` Default: `true`
|
|
Type: `boolean` Default: `true`
|
|
|
|
|
|
##### :warning: `unicodeArray` option must be enabled
|
|
##### :warning: `unicodeArray` option must be enabled
|
|
|
|
|
|
-Instead using direct calls to `unicodeArray` items `var t = _0x43a123[0x0]`,
|
|
|
|
-when index `0x0` can be easily reverted to `0` with few js beautifiers, this option will wrap all calls to special function instead.
|
|
|
|
|
|
+Instead of using direct calls to `unicodeArray` items `var t = _0x43a123[0x0]`, when index `0x0` can be easily reverted to `0` with few js beautifiers, this option will wrap all calls to special function instead.
|
|
|
|
|
|
```javascript
|
|
```javascript
|
|
var t = _0x12a634('0x0')
|
|
var t = _0x12a634('0x0')
|