
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 parte 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 para pseudocódigo de Hex-Rays para ayudar con 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, basándose en los resultados del análisis.

Características
- Soporte multiplataforma para el LLM ajustado aidapal basado en
mistral-7b-instruct. - Fácil integración con el extractor de pseudocódigo haruspex y 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.
- Los crates externos pueden invocar
analyze_codeoanalyze_filepara analizar pseudocódigo y luego procesar los resultados del análisis.
Artículo
Véase también
- 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
Instalación
La forma más sencilla de obtener la última versión es a través de crates.io:
cargo install oneiromancer --locked
Para instalarlo como biblioteca, ejecuta el siguiente comando en el directorio de tu proyecto:
cargo add oneiromancer
Compilación
Alternativamente, puedes compilar desde el código fuente:
git clone --depth 1 https://github.com/0xdea/oneiromancer
cd oneiromancer
cargo build --release --locked
Configuración
- 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
Uso
- Ejecuta oneiromancer de la siguiente manera:
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 - Encuentra el pseudocódigo mejorado en
<target_file>.out.c:vim <target_file>.out.c code <target_file>.out.c
[!TIP] Para obtener mejores resultados, envía una función a la vez para que sea analizada por el LLM.
Compatibilidad
Probado con Ollama 0.32.9 en:
- Apple macOS Tahoe 26.5.2
- Ubuntu Linux 24.04.2 LTS
- Microsoft Windows 11 23H2
Créditos
- Chris Bellows (@AverageBusinessUser) de Atredis Partners por su LLM ajustado
aidapal<3
Registro de cambios
TODO
- Mejorar el manejo del archivo de salida con versionado y/o un directorio de salida.
- Implementar otras características del plugin de IDA Pro
aidapalde IDAPython (p. ej., contexto). - Integrar con haruspex e idalib.
- Implementar un protocolo de "minority report" (es decir, realizar tres consultas y seleccionar las mejores respuestas).
- Considerar una refactorización del renombrado de variables para prevenir una posible corrupción del código.
- Investigar otros casos de uso para el LLM
aidapale implementar una arquitectura modular para conectar LLMs personalizados.