Skip to content

Releases: lorenzoferre/deobfuscator

v1.0.1

22 Sep 11:18
a22e113
Compare
Choose a tag to compare

Changelog

v1.0.1

  • add the sourceType for parsing scripts that do not use strict mode (view commit)
  • fix the check on the init property of the variable declarator (view commit)
  • fix the defeating object mapping plugin (view commit)

v1.0.0

20 Sep 17:28
ec08646
Compare
Choose a tag to compare

Changelog

v1.0.0

Note

Below is a detailed description of the most relevant new features

At the beginning, all the variables are stored within the context. This way, it is possible to evaluate the update expression, even if they do not contain only constant values. Here's an example:

var a = 5;
a += 1;
console.log(a);

The result:

console.log(6);

It is also possible to evaluate some jsfuck expressions, like:

console.log([+!+[]]+[+[]]);

The result:

console.log("10");

The function's results are evaluated if it is within the context and if the arguments in the call expression contain only literal node types. Here’s an example:

function add(a, b) {
    return a + b;
}
console.log(add(1,1));

The result:

console.log(2);

The changed and setChanged variables are only used in the remove-dead-code plugin because it's possible that a function calls another function, but the first one is not called by anything, meaning the second one is also not called. This means the deobfuscator should run more than once. On the other hand, the other plugins no longer use the changed and setChanged variables for optimization purposes

v1.0.2-beta

01 Aug 19:58
Compare
Choose a tag to compare

Changelog

v1.0.2-beta

v1.0.0-beta

15 Oct 15:25
ec75af3
Compare
Choose a tag to compare

The structure of the project has changed. Babel plugins are now used.
Furthermore the documentation is now available

v1.0.0-alpha

19 Aug 19:05
Compare
Choose a tag to compare
v1.0.0-alpha Pre-release
Pre-release

this release allows you to:

  • rename all the variables with the same name in different scopes for better reading of the obfuscated code
  • propagate all constant values
  • evaluation, when possible, of binary expressions, unary expressions, logical expressions and call expressions
  • defeating array mapping
  • transform brackets notation with dots notation
  • evaluation of conditional statement when the test is always truthy or falsy
  • replace outermost iife with the body inside it