Control Flow Flattening / Switch Obfuscation

Control_Flow_Flattening Обфускация (Obfuscation) MEDIUM +4 очков

🎮 Влияние на механику Minecraft

Линейное выполнение методов разбивается на блоки и помещается в бесконечный цикл while(true), управляемый конечным автоматом на основе инструкций switch.

🔍 Анализируемые функции и API

tableswitch / lookupswitch

Инструкции ветвления байткода JVM.

💻 Реализация в моде (Исходный код)

// Obfuscated Control Flow
int state = 0;
while (true) {
    switch (state) {
        case 0: doStepA(); state = 2; break;
        case 1: doStepC(); return;
        case 2: doStepB(); state = 1; break;
    }
}

⚙️ Декомпилированный вид (Vineflower)

// Decompiled with Vineflower 1.12
int state = 0;
while(true) {
    switch (state) {
        case 0:
            doStepA();
            state = 2;
            break;
        case 1:
            doStepC();
            return;
        case 2:
            doStepB();
            state = 1;
    }
}

🛡️ Сигнатура байткода и статический детект

Высокая плотность инструкций switch (>0.08), зацикленных на переменную состояния.