
oneiromancer v0.9.1
Assistente di reverse engineering che utilizza un LLM in esecuzione locale per l'analisi dello pseudocodice.
oneiromancer
"A large fraction of the flaws in software development are due to programmers not fully understanding all the possible states their code may execute in." -- John Carmack
"Can it run Doom?" -- https://canitrundoom.org/
Oneiromancer è un assistente di reverse engineering che utilizza un LLM in esecuzione locale, ottimizzato per il pseudocodice di Hex-Rays, per agevolare l'analisi del codice. Può analizzare una funzione o un frammento di codice più piccolo, restituendo una descrizione di 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.

Funzionalità
- Supporto multipiattaforma per l'LLM ottimizzato aidapal basato su
mistral-7b-instruct. - Facilità di integrazione con l'estrattore di pseudocodice haruspex e con i più diffusi IDE.
- La descrizione del codice, il nome consigliato per la funzione e i 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 ispezione.
- Crate esterni 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 modo più semplice per ottenere l'ultima release è tramite crates.io:
cargo install oneiromancer --locked
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 --depth 1 https://github.com/0xdea/oneiromancer
cd oneiromancer
cargo build --release --locked
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 come segue:
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 i risultati migliori, 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) di Atredis Partners per il suo LLM ottimizzato
aidapal<3
Changelog
TODO
- Migliorare la gestione dei file di output con versioning e/o una directory di output.
- Implementare altre funzionalità del plugin IDA Pro
aidapalper IDAPython (ad esempio, il contesto). - Integrare con haruspex e idalib.
- Implementare un protocollo "minority report" (ovvero, effettuare tre query e selezionare le risposte migliori).
- Valutare un refactoring della rinomina delle variabili per prevenire potenziali corruzioni del codice.
- Studiare altri casi d'uso per l'LLM
aidapale implementare un'architettura modulare per collegare LLM personalizzati.