Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
obfuscation_analysis — Plugin Binary Ninja per analizzare e semplificare codice offuscato | Kitploit
Strumenti/GitHubGitHub/mrphrazer/obfuscation_analysis
Analisi StaticaAnalisi del CodiceReverse EngineeringAnalisi MalwareUtilità e FrameworkAnalisi di Binari
GitHubmrphrazer/obfuscation_analysis

obfuscation_analysis

Plugin Binary Ninja per analizzare e semplificare codice offuscato

Vedi Repository
25523174 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Analisi di Offuscamento (v1.3)

Autori: Tim Blazytko & Nicolò Altamura

Analizza e semplifica codice offuscato

Descrizione:

Obfuscation Analysis è un plugin per Binary Ninja che elimina la fatica di lavorare con binari pesantemente protetti. Include una serie di helper mirati che ti permettono di

  • semplificare espressioni di Aritmetica Mista-Booleana (MBA) con un solo clic (basato su msynth)
  • individuare e ripulire funzioni con disassemblaggio corrotto

Alcuni esempi di casi d'uso sono disponibili in examples. Inoltre, il talk di REcon "Breaking Mixed Boolean-Arithmetic Obfuscation in Real-World Applications" dimostra alcuni casi d'uso. Le slide sono disponibili qui. Il plugin complementa Obfuscation Detection: una volta che le funzioni sospette vengono segnalate, Obfuscation Analysis ti aiuta a ripulirle e comprenderle. Altri helper verranno aggiunti nel tempo.

Funzionalità principali

  • semplifica l'offuscamento di Aritmetica Mista-Booleana nella vista decompilatore di Binary Ninja
  • identifica e rimuove funzioni con disassemblaggio corrotto
  • inline delle funzioni nella vista decompilatore
  • implementazione efficiente e indipendente dall'architettura
  • esecuzione come task in background
  • gestione accurata degli errori: messaggi concisi per l'utente, trace completo nel log di Debug
  • Installazione

    Lo strumento può essere installato tramite il plugin manager di Binary Ninja.

    Per un'installazione manuale, segui questi passaggi nella cartella dei plugin di Binary Ninja:

    root@kitploit:~
    git clone https://github.com/mrphrazer/obfuscation_analysis.git
    cd obfuscation_analysis
    
    # optionally: use a virtual environment
    python -m venv obfana-env
    source obfana-env/bin/activate
    
    # install requirements
    pip install -r requirements.txt
    

    Se utilizzi un ambiente virtuale, dovrai impostare manualmente il percorso site-packages nelle impostazioni di Binary Ninja.

    Utilizzo

    Il plugin è disponibile dal menu della barra superiore di Binary Ninja sotto Plugins -> Obfuscation Analysis.

    Plugin Menu

    Semplificazione MBA

    Per semplificare l'offuscamento aritmetico, evidenzia prima l'espressione HLIL che vuoi semplificare nella vista decompilatore. Poi, scegli Plugins -> Obfuscation Analysis -> MBA Simplification -> Slice & Simplify. Il plugin risolve l'intero calcolo, lo passa attraverso msynth e inserisce il risultato semplificato come commento sulla stessa riga. La breve animazione qui sotto mostra l'intero flusso di lavoro:

    MBA Simplification Workflow

    La semplificazione MBA si basa su msynth. Per impostazione predefinita, il plugin utilizza l'oracolo di semplificazione predefinito di msynth, che viene fornito con il plugin ed è preconfigurato. Se vuoi utilizzare un oracolo più grande o personalizzato, imposta manualmente obfuscation_analysis.mba_oracle_path o naviga fino al file nella finestra Settings di Binary Ninja.

    Plugin Settings

    Se qualcosa va storto, il plugin scrive un messaggio conciso a livello utente nel pannello Log; passa la vista del log a Debug per vedere il traceback completo.

    Log Output

    Funzionalità

    Il plugin include helper mirati che affrontano gli ostacoli comuni che si incontrano durante il reverse engineering di binari protetti, ognuno eseguibile come task in background dall'interfaccia utente o da script head-less. Di seguito sono elencate le funzionalità attualmente disponibili.

    Funzioni Corrotte

    Le Funzioni Corrotte sono funzioni il cui disassemblaggio mostra artefatti indefiniti—basic block vuoti, istruzioni non valide o sovrapposte, e simili. Questo helper percorre l'intero BinaryView, segnala le funzioni con questi sintomi e le elenca in modo che l'analista possa ispezionare rapidamente il codice che è stato interpretato erroneamente o deliberatamente offuscato. Un'azione opzionale di rimozione cancella ogni funzione segnalata e forza una nuova analisi, ripulendo la lista delle funzioni. È particolarmente utile per individuare

    • blob di dati che il disassembler ha erroneamente promosso a codice
    • stub di offuscamento che interrompono il disassemblaggio lineare
    • funzioni che utilizzano istruzioni sovrapposte o salti disallineati
    • problemi con architetture più recenti dove si incontrano istruzioni non comuni

    Semplificazione MBA

    L'Aritmetica Mista-Booleana (MBA) è una tecnica di offuscamento che seppellisce calcoli semplici in lunghe catene di operazioni aritmetiche e booleane. Questa funzionalità semplifica tali espressioni nel decompilatore. Quando selezioni un'istruzione HLIL, il plugin raccoglie la sua catena di calcolo completa con uno slice all'indietro SSA limitato al basic block corrente, traduce quello slice in Miasm IR, lo passa a msynth e infine aggiunge il risultato semplificato come commento nella vista decompilatore. Questa funzionalità ti permette di

    • ridurre grovigli MBA multi-riga in una singola equazione leggibile
    • risolvere predicati opachi che si basano su MBA
    • ridurre codifiche di costanti convolute al loro valore letterale

    Inlining delle Funzioni

    Per la funzione attualmente selezionata, questo helper esegue l'inline ricorsivo di ogni callee all'interno della vista decompilatore, fornendo a Binary Ninja un singolo IL autocontenuto. Una volta rimossi tutti i confini, il decompilatore può propagare i dati attraverso le funzioni, consentendo un constant folding più profondo, l'eliminazione del dead-code e una logica generalmente più chiara. Usalo per

    • ridurre catene di piccoli wrapper, thunk o helper di accesso
    • migliorare le rappresentazioni di algoritmi che sono stati suddivisi tra più funzioni
    • analizzare schemi di offuscamento in cui la logica è deliberatamente dispersa tra le funzioni

    Nota che HLIL può diventare molto grande e lento da renderizzare su funzioni molto grandi o alberi di chiamate profondi. Inoltre, alcune ottimizzazioni del decompilatore potrebbero essere meno efficaci una volta che tutto è unito in un'unica unità. Per controllare questo, puoi limitare la profondità di inlining: imposta Settings -> Obfuscation Analysis -> Max Function Inlining Depth a un limite superiore N (per impostazione predefinita impostato a 1). Con un limite di profondità, vengono inlinati solo i primi N livelli di chiamata; le chiamate più profonde non vengono inlinate.

    Limitazioni

    Il plugin ha alcune avvertenze di cui dovresti essere consapevole, la maggior parte delle quali legate alla pipeline di semplificazione MBA:

    • Bug di Binary Ninja: su BN 5.0 stable, il passo di backward-slicing potrebbe fallire a causa di type-cast HLIL mancanti: https://github.com/Vector35/binaryninja-api/issues/6371; il problema è risolto in 5.1.7477-de e versioni successive

    • slice confinato a un basic block: le definizioni di variabili situate nei blocchi predecessori vengono ignorate (spesso dipendenti dal control-flow), quindi alcuni termini MBA potrebbero rimanere parzialmente risolti

    • lacune nella traduzione da HLIL a Miasm IR: non ogni costrutto HLIL ha un equivalente Miasm corretto; quando la traduzione fallisce l'espressione viene saltata e viene registrato un errore

    • copertura IL: i nodi di control-flow e le operazioni in virgola mobile attualmente non vengono tradotti

    • vincoli ereditati da msynth : la semplificazione MBA eredita tutte le limitazioni di msynth

    Contatti

    Per maggiori informazioni, contatta Tim Blazytko (@mr_phrazer) o Nicolò Altamura (@nicolodev).

    Scarica lo strumento