Merge branch 'dev'

# Conflicts:
#	package.json
This commit is contained in:
sanex3339
2016-08-09 00:39:33 +03:00
5 changed files with 94 additions and 74 deletions
+4
View File
@@ -1,6 +1,10 @@
Change Log
===
v0.7.0-dev.3
---
* Obfuscator now returns an empty string instead of obfuscated code if source code is empty
v0.7.0-dev.2
---
* Fix of incorrect `Utils.decToHex` method
+68 -64
View File
@@ -220,8 +220,8 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
var escodegen = __webpack_require__(10);
var esprima = __webpack_require__(18);
var estraverse = __webpack_require__(4);
var NodeType_1 = __webpack_require__(6);
var Nodes_1 = __webpack_require__(8);
var NodeType_1 = __webpack_require__(7);
var Nodes_1 = __webpack_require__(6);
var Utils_1 = __webpack_require__(0);
var NodeUtils = function () {
@@ -414,7 +414,7 @@ var _createClass = function () { function defineProperties(target, props) { for
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var JSFuck_1 = __webpack_require__(16);
var Nodes_1 = __webpack_require__(8);
var Nodes_1 = __webpack_require__(6);
var Utils_1 = __webpack_require__(0);
var NodeObfuscator = function () {
@@ -519,55 +519,11 @@ exports.NodeObfuscator = NodeObfuscator;
"use strict";
"use strict";
var Utils_1 = __webpack_require__(0);
exports.NodeType = Utils_1.Utils.strEnumify({
ArrayExpression: 'ArrayExpression',
ArrowFunctionExpression: 'ArrowFunctionExpression',
AssignmentExpression: 'AssignmentExpression',
BinaryExpression: 'BinaryExpression',
BlockStatement: 'BlockStatement',
CallExpression: 'CallExpression',
CatchClause: 'CatchClause',
ClassDeclaration: 'ClassDeclaration',
ExpressionStatement: 'ExpressionStatement',
FunctionDeclaration: 'FunctionDeclaration',
FunctionExpression: 'FunctionExpression',
Identifier: 'Identifier',
IfStatement: 'IfStatement',
Literal: 'Literal',
LogicalExpression: 'LogicalExpression',
MemberExpression: 'MemberExpression',
MethodDefinition: 'MethodDefinition',
ObjectExpression: 'ObjectExpression',
Program: 'Program',
Property: 'Property',
ReturnStatement: 'ReturnStatement',
TryStatement: 'TryStatement',
UnaryExpression: 'UnaryExpression',
UpdateExpression: 'UpdateExpression',
VariableDeclaration: 'VariableDeclaration',
VariableDeclarator: 'VariableDeclarator',
WhileStatement: 'WhileStatement'
});
/***/ },
/* 7 */
/***/ function(module, exports) {
module.exports = require("format-unicorn");
/***/ },
/* 8 */
/***/ function(module, exports, __webpack_require__) {
"use strict";
"use strict";
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var NodeType_1 = __webpack_require__(6);
var NodeType_1 = __webpack_require__(7);
var Nodes = function () {
function Nodes() {
@@ -630,6 +586,50 @@ var Nodes = function () {
exports.Nodes = Nodes;
/***/ },
/* 7 */
/***/ function(module, exports, __webpack_require__) {
"use strict";
"use strict";
var Utils_1 = __webpack_require__(0);
exports.NodeType = Utils_1.Utils.strEnumify({
ArrayExpression: 'ArrayExpression',
ArrowFunctionExpression: 'ArrowFunctionExpression',
AssignmentExpression: 'AssignmentExpression',
BinaryExpression: 'BinaryExpression',
BlockStatement: 'BlockStatement',
CallExpression: 'CallExpression',
CatchClause: 'CatchClause',
ClassDeclaration: 'ClassDeclaration',
ExpressionStatement: 'ExpressionStatement',
FunctionDeclaration: 'FunctionDeclaration',
FunctionExpression: 'FunctionExpression',
Identifier: 'Identifier',
IfStatement: 'IfStatement',
Literal: 'Literal',
LogicalExpression: 'LogicalExpression',
MemberExpression: 'MemberExpression',
MethodDefinition: 'MethodDefinition',
ObjectExpression: 'ObjectExpression',
Program: 'Program',
Property: 'Property',
ReturnStatement: 'ReturnStatement',
TryStatement: 'TryStatement',
UnaryExpression: 'UnaryExpression',
UpdateExpression: 'UpdateExpression',
VariableDeclaration: 'VariableDeclaration',
VariableDeclarator: 'VariableDeclarator',
WhileStatement: 'WhileStatement'
});
/***/ },
/* 8 */
/***/ function(module, exports) {
module.exports = require("format-unicorn");
/***/ },
/* 9 */
/***/ function(module, exports, __webpack_require__) {
@@ -981,7 +981,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
var estraverse = __webpack_require__(4);
var AppendState_1 = __webpack_require__(2);
var NodeType_1 = __webpack_require__(6);
var NodeType_1 = __webpack_require__(7);
var CatchClauseObfuscator_1 = __webpack_require__(38);
var ConsoleOutputNodesGroup_1 = __webpack_require__(34);
var DebugProtectionNodesGroup_1 = __webpack_require__(35);
@@ -990,6 +990,7 @@ var FunctionObfuscator_1 = __webpack_require__(40);
var LiteralObfuscator_1 = __webpack_require__(41);
var MemberExpressionObfuscator_1 = __webpack_require__(42);
var MethodDefinitionObfuscator_1 = __webpack_require__(43);
var Nodes_1 = __webpack_require__(6);
var NodeUtils_1 = __webpack_require__(1);
var ObjectExpressionObfuscator_1 = __webpack_require__(44);
var SelfDefendingNodesGroup_1 = __webpack_require__(36);
@@ -1008,6 +1009,9 @@ var Obfuscator = function () {
_createClass(Obfuscator, [{
key: 'obfuscateNode',
value: function obfuscateNode(node) {
if (Nodes_1.Nodes.isProgramNode(node) && !node.body.length) {
return node;
}
NodeUtils_1.NodeUtils.parentize(node);
this.beforeObfuscation(node);
this.obfuscate(node);
@@ -1420,7 +1424,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
__webpack_require__(7);
__webpack_require__(8);
var AppendState_1 = __webpack_require__(2);
var DebufProtectionFunctionCallTemplate_1 = __webpack_require__(51);
var Node_1 = __webpack_require__(3);
@@ -1473,7 +1477,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
__webpack_require__(7);
__webpack_require__(8);
var AppendState_1 = __webpack_require__(2);
var DebugProtectionFunctionIntervalTemplate_1 = __webpack_require__(52);
var Node_1 = __webpack_require__(3);
@@ -1526,7 +1530,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
__webpack_require__(7);
__webpack_require__(8);
var AppendState_1 = __webpack_require__(2);
var DebugProtectionFunctionTemplate_1 = __webpack_require__(53);
var Node_1 = __webpack_require__(3);
@@ -1658,7 +1662,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
__webpack_require__(7);
__webpack_require__(8);
var AppendState_1 = __webpack_require__(2);
var UnicodeArrayCallsWrapperTemplate_1 = __webpack_require__(55);
var Node_1 = __webpack_require__(3);
@@ -1732,7 +1736,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
__webpack_require__(7);
__webpack_require__(8);
var AppendState_1 = __webpack_require__(2);
var NoCustomNodesPreset_1 = __webpack_require__(13);
var AtobTemplate_1 = __webpack_require__(49);
@@ -1813,7 +1817,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
__webpack_require__(7);
__webpack_require__(8);
var AppendState_1 = __webpack_require__(2);
var UnicodeArrayTemplate_1 = __webpack_require__(58);
var Node_1 = __webpack_require__(3);
@@ -1900,7 +1904,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
__webpack_require__(7);
__webpack_require__(8);
var AppendState_1 = __webpack_require__(2);
var NoCustomNodesPreset_1 = __webpack_require__(13);
var SelfDefendingTemplate_1 = __webpack_require__(59);
@@ -2231,7 +2235,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var estraverse = __webpack_require__(4);
var NodeType_1 = __webpack_require__(6);
var NodeType_1 = __webpack_require__(7);
var NodeObfuscator_1 = __webpack_require__(5);
var NodeUtils_1 = __webpack_require__(1);
@@ -2388,7 +2392,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
var escodegen = __webpack_require__(10);
var NodeObfuscator_1 = __webpack_require__(5);
var Nodes_1 = __webpack_require__(8);
var Nodes_1 = __webpack_require__(6);
var LiteralObfuscator = function (_NodeObfuscator_1$Nod) {
_inherits(LiteralObfuscator, _NodeObfuscator_1$Nod);
@@ -2451,9 +2455,9 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
var escodegen = __webpack_require__(10);
var estraverse = __webpack_require__(4);
var NodeType_1 = __webpack_require__(6);
var NodeType_1 = __webpack_require__(7);
var NodeObfuscator_1 = __webpack_require__(5);
var Nodes_1 = __webpack_require__(8);
var Nodes_1 = __webpack_require__(6);
var MemberExpressionObfuscator = function (_NodeObfuscator_1$Nod) {
_inherits(MemberExpressionObfuscator, _NodeObfuscator_1$Nod);
@@ -2535,7 +2539,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
var estraverse = __webpack_require__(4);
var NodeObfuscator_1 = __webpack_require__(5);
var Nodes_1 = __webpack_require__(8);
var Nodes_1 = __webpack_require__(6);
var Utils_1 = __webpack_require__(0);
var MethodDefinitionObfuscator = function (_NodeObfuscator_1$Nod) {
@@ -2601,9 +2605,9 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
var escodegen = __webpack_require__(10);
var estraverse = __webpack_require__(4);
var NodeType_1 = __webpack_require__(6);
var NodeType_1 = __webpack_require__(7);
var NodeObfuscator_1 = __webpack_require__(5);
var Nodes_1 = __webpack_require__(8);
var Nodes_1 = __webpack_require__(6);
var Utils_1 = __webpack_require__(0);
var ObjectExpressionObfuscator = function (_NodeObfuscator_1$Nod) {
@@ -2683,7 +2687,7 @@ function _possibleConstructorReturn(self, call) { if (!self) { throw new Referen
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var estraverse = __webpack_require__(4);
var NodeType_1 = __webpack_require__(6);
var NodeType_1 = __webpack_require__(7);
var NodeObfuscator_1 = __webpack_require__(5);
var NodeUtils_1 = __webpack_require__(1);
var Utils_1 = __webpack_require__(0);
+5 -5
View File
@@ -1,6 +1,6 @@
{
"name": "javascript-obfuscator",
"version": "0.7.0-dev.2",
"version": "0.7.0-dev.3",
"description": "JavaScript obfuscator",
"keywords": [
"obfuscator",
@@ -35,10 +35,10 @@
"@types/chai": "^3.4.30",
"@types/chance": "^0.7.28",
"@types/commander": "^2.3.29",
"@types/escodegen": "0.0.2",
"@types/esprima": "^2.1.29",
"@types/estraverse": "0.0.2",
"@types/format-unicorn": "0.0.28",
"@types/escodegen": "^0.0.2",
"@types/esprima": "^2.1.30",
"@types/estraverse": "^0.0.2",
"@types/format-unicorn": "^0.0.28",
"@types/joi": "^9.0.29",
"@types/mkdirp": "^0.3.28",
"@types/mocha": "^2.2.29",
+5
View File
@@ -18,6 +18,7 @@ import { FunctionObfuscator } from './node-obfuscators/FunctionObfuscator';
import { LiteralObfuscator } from './node-obfuscators/LiteralObfuscator';
import { MemberExpressionObfuscator } from './node-obfuscators/MemberExpressionObfuscator';
import { MethodDefinitionObfuscator } from './node-obfuscators/MethodDefinitionObfuscator';
import { Nodes } from "./Nodes";
import { NodeUtils } from "./NodeUtils";
import { ObjectExpressionObfuscator } from './node-obfuscators/ObjectExpressionObfuscator';
import { SelfDefendingNodesGroup } from "./node-groups/SelfDefendingNodesGroup";
@@ -73,6 +74,10 @@ export class Obfuscator implements IObfuscator {
* @returns {INode}
*/
public obfuscateNode (node: INode): INode {
if (Nodes.isProgramNode(node) && !node.body.length) {
return node;
}
NodeUtils.parentize(node);
this.beforeObfuscation(node);
@@ -53,9 +53,9 @@ describe('JavaScriptObfuscator', () => {
it('should returns object with empty obfuscated code and source map with empty data if source code is empty', () => {
let obfuscationResult: IObfuscationResult = JavaScriptObfuscator.obfuscate(
'',
Object.assign({}, NO_CUSTOM_NODES_PRESET, {
{
sourceMap: true
})
}
);
assert.isNotOk(obfuscationResult.getObfuscatedCode());
@@ -65,11 +65,18 @@ describe('JavaScriptObfuscator', () => {
});
});
it('should returns empty string if source code is empty', () => {
it('should returns an empty string if source code is empty', () => {
assert.isNotOk(
JavaScriptObfuscator.obfuscate(
'',
Object.assign({}, NO_CUSTOM_NODES_PRESET)
''
).getObfuscatedCode()
);
});
it('should returns an empty string if source code contains only comments', () => {
assert.isNotOk(
JavaScriptObfuscator.obfuscate(
'// comment'
).getObfuscatedCode()
);
});