Skip to content

Commit

Permalink
simplifying array expressions
Browse files Browse the repository at this point in the history
  • Loading branch information
ben-sb committed May 18, 2022
1 parent 11e2e30 commit cbb6462
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "javascript-deobfuscator",
"version": "1.0.11",
"version": "1.0.12",
"description": "",
"main": "dist/index.js",
"scripts": {
Expand Down
30 changes: 30 additions & 0 deletions src/modifications/expressions/expressionSimplifier.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,34 @@ export default class ExpressionSimplifier extends Modification {
return `"${value}"`;

case 'LiteralNumericExpression':
case 'LiteralBooleanExpression':
return expression.value.toString();

case 'ArrayExpression':
if (expression.elements.length == 0) {
return '[]';
} else if (expression.elements.every(e => !e || e.type.startsWith('Literal'))) {
let content = '';
for (let i=0; i<expression.elements.length; i++) {
if (expression.elements[i]) {
content += `${this.getExpressionValueAsString(expression.elements[i] as Shift.Expression)},`;
} else {
content += ',';
}
}
return `[${content.substring(0, content.length - 1)}]`;
} else {
return null;
}

case 'ObjectExpression':
if (expression.properties.length == 0) {
expression.properties
return '[]';
} else {
return null;
}

case 'UnaryExpression':
const operand = this.getExpressionValueAsString(expression.operand);
return operand != null
Expand Down Expand Up @@ -157,4 +183,8 @@ export default class ExpressionSimplifier extends Modification {
return null;
}
}

private isSimpleArray(array: Shift.ArrayExpression): boolean {
return array.elements.every(e => !e || e.type.startsWith('Literal'));
}
}

0 comments on commit cbb6462

Please sign in to comment.