Module refinery.lib.scripts.js

Expand source code Browse git
from __future__ import annotations

Sub-modules

refinery.lib.scripts.js.analysis

Static-analysis substrate for JavaScript deobfuscation. Transforms query a shared, computed model of the program here instead of each re-deriving …

refinery.lib.scripts.js.builtins

The functions the language installs on the prototypes of the values a fold holds, and the constructors owning those prototypes. PROTOTYPE_METHODS is …

refinery.lib.scripts.js.deobfuscation

JavaScript AST deobfuscation transforms.

refinery.lib.scripts.js.keys

How the analyses read a property key, and what a call that may install an accessor installs …

refinery.lib.scripts.js.lexer
refinery.lib.scripts.js.model

The JavaScript syntax tree: one node type per production of the grammar, and the few predicates that answer a question about a node from the node alone …

refinery.lib.scripts.js.numbers

The JavaScript Number value domain. A Number is an IEEE-754 double, so the Python type that models one is float and nothing else: float arithmetic …

refinery.lib.scripts.js.options

Caller-supplied options controlling JavaScript deobfuscation.

refinery.lib.scripts.js.parser
refinery.lib.scripts.js.precedence

JavaScript operator precedence and parenthesization rules …

refinery.lib.scripts.js.strict

Where strict mode comes from, and what it forbids. The parser is fully permissive and always produces the sloppy-mode parse tree; strict mode never …

refinery.lib.scripts.js.synth
refinery.lib.scripts.js.token
refinery.lib.scripts.js.utf16
refinery.lib.scripts.js.values

The JavaScript value domain: what a value is (Value, JS_NULL, JS_HOLE, JsBuffer), the ECMA-262 conversions between values (to_number, …