Releases: lorenzoferre/deobfuscator
v1.0.1
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
Changelog
v1.0.0
- update README.md (view commit)
- remove @babel/parser dependency (view commit)
- add a test that contains random dynamic operations (view commit)
- change the order of the insert-variable-within-context plugin (view commit)
- change the import of the plugin (view commit)
- rename the plugin (view commit)
- fix a check of the evaluatedValue (view commit)
- remove useless parts and rename the plugin (view commit)
- optimization of Babel traversals without using the 'changed' variable (view commit)
- delete the unused plugins (view commit)
- move the evaluate plugin to the dynamic technique folder (view commit)
- remove commented plugins (view commit)
- fix the test of the control flow unflattening (view commit)
- fix reconstruction of variable declarations (view commit)
- fix a check in the evaluate plugin (view commit)
- add a test for the control flow unflattening plugin (view commit)
- fix control flow unflattening (view commit)
- fix the initialization of a variable within the context (view commit)
- fix a check (view commit)
- add a console log when renaming variables in the same scope test (view commit)
- fix the removal of empty block statements (view commit)
- fix renaming variables in the same scope (view commit)
- remove a comment (view commit)
- remove dynamic condition from the deobfuscator (view commit)
- move functions inside the plugin (view commit)
- fix evaluate plugin (view commit)
- creation of a context for dynamic techniques (view commit)
- fix reachable functions test (view commit)
- remove useless condition (view commit)
- fix evaluation of update expressions (view commit)
- fix traverses for evaluating functions (view commit)
- remove a comment (view commit)
- fix an edge case (view commit)
- fix name of the plugin (view commit)
- fix constant propagation (view commit)
- fix defeating-array-mapping plugin (view commit)
- evaluate jsfuck expressions (view commit)
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
Changelog
v1.0.2-beta
- fix evaluation of functions (view commit)
- fix evaluation of update expressions (view commit)
- fix reconstruction of variables (view commit)
- fix the maximum call stack size exceeded (view commit)
- move control-flow-unflattening file into dynamics folder (view commit)
- evaluation of update expressions (view commit)
- wip control flow unflattening (view commit)
- fix evaluation of arrow functions with literal type nodes (view commit)
- explicit visitor mode to enter in each node (view commit)
- fix dependencies (view commit)
- transform sequence expressions (view commit)
- project restructuration (view commit)
- fix test (view commit)
- fix evaluation of functions (view commit)
- fix bracket to dot test (view commit)
- fix error in the documentation (view commit)
add a test to transform function expressions into function declarations (view commit)- add a test for reconstructing variable declarations (view commit)
replace function expressions with function declarations (view commit)- reconstruct varaible declarations (view commit)
- retrive results returned by functions (view commit)
- usage of removeNewLinesAndTabs function (view commit)
- update the transformation from bracket to dot notation (view commit)
- add tests for defeating object mapping (view commit)
- defeating object mapping (view commit)
- rename plugin (view commit)
fix test (view commit)
v1.0.0-beta
The structure of the project has changed. Babel plugins are now used.
Furthermore the documentation is now available
v1.0.0-alpha
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