
oneiromancer v0.9.1
Assistant de rétro-ingénierie utilisant un LLM local pour aider à l'analyse de pseudocode.
oneiromancer
« Une grande partie des défauts dans le développement logiciel provient du fait que les programmeurs ne comprennent pas pleinement tous les états dans lesquels leur code peut s'exécuter. » -- John Carmack
« Peut-il faire tourner Doom ? » -- https://canitrundoom.org/
Oneiromancer est un assistant de rétro-ingénierie qui utilise un LLM exécuté localement, affiné pour le pseudo-code Hex-Rays, afin de faciliter l'analyse de code. Il peut analyser une fonction ou un extrait de code plus court, renvoyant une description de haut niveau de ce que fait le code, un nom recommandé pour la fonction, et des suggestions de renommage de variables, sur la base des résultats de l'analyse.

Fonctionnalités
- Prise en charge multiplateforme du LLM affiné aidapal basé sur
mistral-7b-instruct. - Intégration facile avec l'extracteur de pseudo-code haruspex et les IDE populaires.
- Description du code, nom de fonction recommandé et suggestions de renommage de variables sont affichés sur le terminal.
- Le pseudo-code amélioré de chaque fonction analysée est enregistré dans un fichier séparé pour une inspection facile.
- Les crates externes peuvent invoquer
analyze_codeouanalyze_filepour analyser le pseudo-code puis traiter les résultats de l'analyse.
Article
Voir aussi
- 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
Installation
La façon la plus simple d'obtenir la dernière version est via crates.io :
cargo install oneiromancer
Pour installer en tant que bibliothèque, exécutez la commande suivante dans le répertoire de votre projet :
cargo add oneiromancer
Compilation
Vous pouvez également compiler à partir des sources :
git clone https://github.com/0xdea/oneiromancer
cd oneiromancer
cargo build --release
Configuration
- Téléchargez et installez Ollama.
- Téléchargez les poids affinés et le modelfile Ollama depuis 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 - Configurez Ollama en exécutant les commandes suivantes dans le répertoire où vous avez téléchargé les fichiers :
ollama create aidapal -f aidapal.modelfile ollama list
Utilisation
- Exécutez oneiromancer comme suit :
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 - Retrouvez le pseudo-code amélioré dans
<target_file>.out.c:vim <target_file>.out.c code <target_file>.out.c
[!TIP] Pour de meilleurs résultats, soumettez une fonction à la fois à l'analyse par le LLM.
Compatibilité
Testé avec Ollama 0.32.9 sur :
- Apple macOS Tahoe 26.5.2
- Ubuntu Linux 24.04.2 LTS
- Microsoft Windows 11 23H2
Crédits
- Chris Bellows (@AverageBusinessUser) chez Atredis Partners pour son LLM affiné
aidapal<3
Journal des modifications
À faire
- Améliorer la gestion des fichiers de sortie avec versionnage et/ou un répertoire de sortie.
- Implémenter d'autres fonctionnalités du plugin IDA Pro
aidapalIDAPython (par exemple, le contexte). - Intégrer avec haruspex et idalib.
- Implémenter un protocole de « rapport minoritaire » (c'est-à-dire faire trois requêtes et sélectionner les meilleures réponses).
- Envisager un refactor du renommage de variables pour prévenir une corruption potentielle du code.
- Explorer d'autres cas d'utilisation du LLM
aidapalet implémenter une architecture modulaire pour brancher des LLM personnalisés.