Control Flow Flattening
Wandelt die Codestruktur um, damit der ursprüngliche Programmablauf verborgen bleibt. Linearer Code wird in eine Zustandsmaschine mit einer switch-Anweisung überführt, was die manuelle Analyse deutlich erschwert.
Diese Option kann die Ausführung spürbar verlangsamen; messen Sie das an Ihrem eigenen Code. Mit controlFlowFlatteningThreshold legen Sie den Anteil der Knoten fest, die abgeflacht werden; niedrigere Werte erhalten mehr Performance.
Control Flow Flattening lässt sich mit den übrigen Basisoptionen und mit der VM-Obfuskierung kombinieren. Ist vmObfuscation aktiviert, läuft zuerst die Virtualisierung, und Control Flow Flattening wird danach auf das verbleibende JavaScript angewendet, etwa auf Funktionen, die nicht für die VM ausgewählt wurden; bereits zu Bytecode kompilierter Code wird nicht abgeflacht.
