
oneiromancer v0.9.1
Asistente de ingeniería inversa que utiliza un LLM que se ejecuta localmente para ayudar con el análisis de pseudocódigo.
oneiromancer
"Una gran fracción de los defectos en el desarrollo de software se deben a que los programadores no comprenden completamente todos los estados posibles en los que su código puede ejecutarse." -- John Carmack
"¿Puede ejecutar Doom?" -- https://canitrundoom.org/
Oneiromancer es un asistente de ingeniería inversa que utiliza un LLM que se ejecuta localmente y que ha sido ajustado (fine-tuning) para pseudocódigo de Hex-Rays, con el fin de ayudar en el análisis de código. Puede analizar una función o un fragmento de código más pequeño, devolviendo una descripción de alto nivel de lo que hace el código, un nombre recomendado para la función y sugerencias de renombrado de variables, basadas en los resultados del análisis.

Features
- Soporte multiplataforma para el LLM ajustado aidapal basado en
mistral-7b-instruct. - Integración sencilla con el extractor de pseudocódigo haruspex e IDEs populares.
- La descripción del código, el nombre de función recomendado y las sugerencias de renombrado de variables se imprimen en la terminal.
- El pseudocódigo mejorado de cada función analizada se guarda en un archivo separado para facilitar su inspección.
- Las crates externas pueden invocar
analyze_codeoanalyze_filepara analizar pseudocódigo y luego procesar los resultados del análisis.
Article
See also
- 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
Installing
La forma más sencilla de obtener la última versión es a través de crates.io:
cargo install oneiromancer
Para instalarlo como librería, ejecuta el siguiente comando en el directorio de tu proyecto:
cargo add oneiromancer
Compiling
Alternativamente, puedes compilarlo desde el código fuente:
git clone https://github.com/0xdea/oneiromancer
cd oneiromancer
cargo build --release
Configuration
- Descarga e instala Ollama.
- Descarga los pesos ajustados y el modelfile de Ollama desde 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 ejecutando los siguientes comandos dentro del directorio en el que descargaste los archivos:
ollama create aidapal -f aidapal.modelfile ollama list
Usage
- Ejecuta oneiromancer de la siguiente manera:
export OLLAMA_BASEURL=custom_baseurl # si no está definido, se usará el valor predeterminado export OLLAMA_MODEL=custom_model # si no está definido, se usará el valor predeterminado oneiromancer <target_file>.c - Encuentra el pseudocódigo mejorado en
<target_file>.out.c:vim <target_file>.out.c code <target_file>.out.c
[!TIP] Para obtener los mejores resultados, envía una función a la vez para que el LLM la analice.
Compatibility
Probado con Ollama 0.32.9 en:
- Apple macOS Tahoe 26.5.2
- Ubuntu Linux 24.04.2 LTS
- Microsoft Windows 11 23H2
Credits
- A Chris Bellows (@AverageBusinessUser) de Atredis Partners por su LLM ajustado
aidapal<3
Changelog
TODO
- Mejorar el manejo de archivos de salida con versionado y/o un directorio de salida.
- Implementar otras características del plugin
aidapalde IDA Pro en IDAPython (p. ej., contexto). - Integrar con haruspex e idalib.
- Implementar un protocolo de "minority report" (es decir, hacer tres consultas y seleccionar las mejores respuestas).
- Considerar una refactorización del renombrado de variables para evitar una posible corrupción del código.
- Investigar otros casos de uso para el LLM
aidapale implementar una arquitectura modular para conectar LLMs personalizados.