Control Flow Flattening
controlFlowFlattening
コードの構造を変換し、元のプログラムの流れを隠します。直線的なコードを switch 文を使ったステートマシンに変換することで、手作業による解析を大幅に難しくします。
このオプションにより、実行速度が目に見えて低下する場合があります。自分のコードで計測してください。controlFlowFlatteningThreshold で平坦化するノードの割合を設定できます。値を低くするほどパフォーマンスへの影響を抑えられます。
Control Flow Flattening は、他の基本オプションや VM 難読化と組み合わせて使えます。vmObfuscation が有効な場合は仮想化が先に実行され、その後、VM の対象に選ばれなかった関数など、残った JavaScript に Control Flow Flattening が適用されます。すでにバイトコードにコンパイルされたコードは平坦化されません。
