
Obfusk8: libreria di offuscamento leggera basata su C++17 / Solo header per binari Windows
Obfusk8 è una libreria C++17 leggera, header-only, progettata per migliorare significativamente l'offuscamento delle tue applicazioni, rendendo il reverse engineering un'impresa sostanzialmente più difficile. Raggiunge questo obiettivo attraverso un insieme eterogeneo di tecniche compile-time e runtime volte a proteggere la logica e i dati del tuo codice.

main (Macro _main)Il punto di ingresso della tua applicazione (main) viene trasformato in un motore di offuscamento complesso e multilivello:
main_body venga eseguito, una mini-VM (CPU simulata) esegue una sequenza di istruzioni "crittografate". Questo nasconde il vero punto di ingresso e le operazioni iniziali. Lo stato della VM (registri, program counter, dispatch key) viene inizializzato con valori randomizzati a runtime._main (sia nel prologo che nell'epilogo) vengono trasformati in intricate macchine a stati. Il flusso di controllo non è diretto ma determinato da variabili di stato pesantemente "crittografate". Le chiavi di codifica/decodifica per queste variabili di stato sono dinamiche, derivate dallo stato della VM, dai contatori di loop, dalla casualità compile-time (come __COUNTER__, __LINE__, __TIME__) e da un seed opaco globale. Questo rende l'analisi statica del flusso di controllo eccezionalmente difficile.
obf_icff_ns_dcff e obf_icff_ns_epd) con diverse logiche di transizione di stato e generazione delle chiavi, complicando ulteriormente l'analisi.OBF_BOGUS_FLOW_*): Numerosi pattern di salto fuorvianti e strutture condizionali contorte vengono iniettati in tutto _main. Questi usano istruzioni goto combinate con predicati opachi (condizioni che valutano sempre vero o falso ma sono computazionalmente costose o difficili da determinare staticamente). Questo crea un labirinto di percorsi falsi per disassembler e decompilatori.
OBF_BOGUS_FLOW_LABYRINTH, OBF_BOGUS_FLOW_GRID, OBF_BOGUS_FLOW_SCRAMBLE, OBF_BOGUS_FLOW_WEAVER, OBF_BOGUS_FLOW_CASCADE e OBF_BOGUS_FLOW_CYCLONE per generare flussi fittizi diversi e complessi.Runtime, SEH):
__except possono alterare lo stato del programma, rendendo difficile seguirlo se il debugger salta le eccezioni.Runtime contiene condizioni che, se verificate (a causa di specifici stati della VM o tempistiche), potrebbero attivare __debugbreak() o lanciare eccezioni, progettate per interrompere le sessioni di debug.obf_vm_engine)Un componente fondamentale dell'offuscamento della macro _main:
r0, r1, r2), un program counter (pc) e una dispatch_key. Esegue "istruzioni" personalizzate (handler).reg_dispatch_idx).get_mem_dispatch_table).mixed_dispatch_idx).
La dispatch_key viene costantemente mutata, rendendo la sequenza degli handler eseguiti altamente imprevedibile.vm_handler_table) viene essa stessa mutata a runtime nel prologo ed epilogo di _main, oscurando ulteriormente il comportamento della VM.OBFUSCATE_STRING da AES8.hpp)__FILE__, __LINE__) e dal tempo di build (__DATE__, __TIME__).AES8.hpp).STEALTH_API_OBFSTR / STEALTH_API_OBF da Resolve8.hpp)GetModuleHandle e GetProcAddress per la risoluzione iniziale, se essi stessi non sono già stati risolti da questo meccanismo.CT_HASH) dei nomi di DLL e API per le ricerche. Questo impedisce che i nomi in chiaro di DLL e API appaiano nei dati relativi all'import o nelle tabelle di stringhe del binario quando si usano queste macro.K8_SYSCALL)Obfusk8 ora integra un meccanismo Indirect Syscall all'avanguardia per bypassare gli User-Mode Hook (EDR/AV) e i controlli di analisi statica.
K8_SYSCALL("ZwOpenProcess", ...) al posto di NtOpenProcess.