
oneiromancer v0.9.1
Assistente di reverse engineering che utilizza un LLM in esecuzione locale per l'analisi dello pseudocodice.
oneiromancer
"Una gran parte dei difetti nello sviluppo del software è dovuta al fatto che i programmatori non comprendono appieno tutti i possibili stati in cui il loro codice può essere eseguito." -- John Carmack
"Può far girare Doom?" -- https://canitrundoom.org/
Oneiromancer è un assistente di reverse engineering che utilizza un LLM eseguito localmente e ottimizzato (fine-tuned) per lo pseudocodice di Hex-Rays, allo scopo di facilitare l'analisi del codice. Può analizzare una funzione o un frammento di codice più piccolo, restituendo una descrizione ad alto livello di ciò che il codice fa, un nome consigliato per la funzione e suggerimenti per la rinomina delle variabili, in base ai risultati dell'analisi.

Caratteristiche
- Supporto multipiattaforma per l'LLM ottimizzato aidapal basato su
mistral-7b-instruct. - Facile integrazione con l'estrattore di pseudocodice haruspex e gli IDE più diffusi.
- Descrizione del codice, nome di funzione consigliato e suggerimenti per la rinomina delle variabili vengono stampati sul terminale.
- Lo pseudocodice migliorato di ogni funzione analizzata viene salvato in un file separato per una facile consultazione.
- Le crate esterne possono invocare
analyze_codeoanalyze_fileper analizzare lo pseudocodice e poi elaborare i risultati dell'analisi.
Articolo
Vedi anche
- https://www.atredis.com/blog/2024/6/3/how-to-train-your-large-language-model
- https://huggingface.co/AverageBusinessUser/aidapal
- https://github.com/atredispartners/aidapal
- https://plugins.hex-rays.com/atredispartners/aidapal
Installazione
Il metodo più semplice per ottenere l'ultima release è tramite crates.io:
cargo install oneiromancer
Per installarlo come libreria, esegui il seguente comando nella directory del tuo progetto:
cargo add oneiromancer
Compilazione
In alternativa, puoi compilare dal sorgente:
git clone https://github.com/0xdea/oneiromancer
cd oneiromancer
cargo build --release
Configurazione
- Scarica e installa Ollama.
- Scarica i pesi ottimizzati e il modelfile di Ollama da Hugging Face:
wget https://huggingface.co/AverageBusinessUser/aidapal/resolve/main/aidapal-8k.Q4_K_M.gguf wget https://huggingface.co/AverageBusinessUser/aidapal/resolve/main/aidapal.modelfile - Configura Ollama eseguendo i seguenti comandi nella directory in cui hai scaricato i file:
ollama create aidapal -f aidapal.modelfile ollama list
Utilizzo
- Esegui oneiromancer nel seguente modo:
export OLLAMA_BASEURL=custom_baseurl # if not set, the default will be used export OLLAMA_MODEL=custom_model # if not set, the default will be used oneiromancer <target_file>.c - Trova lo pseudocodice migliorato in
<target_file>.out.c:vim <target_file>.out.c code <target_file>.out.c
[!TIP] Per ottenere risultati ottimali, invia una funzione alla volta per l'analisi da parte dell'LLM.
Compatibilità
Testato con Ollama 0.32.9 su:
- Apple macOS Tahoe 26.5.2
- Ubuntu Linux 24.04.2 LTS
- Microsoft Windows 11 23H2
Crediti
- Chris Bellows (@AverageBusinessUser) presso Atredis Partners per il suo LLM ottimizzato
aidapal<3
Registro delle modifiche
TODO
- Migliorare la gestione dei file di output con versioning e/o una directory di output.
- Implementare altre funzionalità del plugin IDAPython
aidapalper IDA Pro (ad es., contesto). - Integrare con haruspex e idalib.
- Implementare un protocollo "minority report" (cioè effettuare tre query e selezionare le risposte migliori).
- Valutare un refactoring della rinomina delle variabili per prevenire una potenziale corruzione del codice.
- Investigare altri casi d'uso per l'LLM
aidapale implementare un'architettura modulare per integrare LLM personalizzati.