javascript-deobfuscator icon indicating copy to clipboard operation
javascript-deobfuscator copied to clipboard

[Bug] Mishandling of scope

Open Semnodime opened this issue 1 year ago • 1 comments

In the following example, the declaration of bar via const bar = function(){…} is not incorporated in the deobfuscation result of function body foo:

function foo() {
    const bar = function () {
        for (;;){
            return 0;
        }
    };

    const x = bar();
    return x
}

function bar() {
    return 42;
}

deobfuscation should result in foo returning 0 either directly or indirectly instead.

Semnodime avatar May 22 '23 15:05 Semnodime

Weirdly enough, it works when the complexity of the refered-to bar function is reduced to a plain return 0 without the for-loop wrapper:

function foo() {
    const bar = function () {
        return 0;
    };

    const x = bar();
    return x
}

function bar() {
    return 42;
}

correctly results in

function foo() {
  const x = 0;
  return x;
}

Semnodime avatar May 22 '23 15:05 Semnodime