
Asistente de ingeniería inversa que utiliza un LLM que se ejecuta localmente para ayudar con el análisis de pseudocódigo.
"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.

mistral-7b-instruct.analyze_code o analyze_file para analizar pseudocódigo y luego procesar los resultados del análisis.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
Alternativamente, puedes compilarlo desde el código fuente:
git clone https://github.com/0xdea/oneiromancer
cd oneiromancer
cargo build --release
wget https://huggingface.co/AverageBusinessUser/aidapal/resolve/main/aidapal-8k.Q4_K_M.gguf
wget https://huggingface.co/AverageBusinessUser/aidapal/resolve/main/aidapal.modelfile
ollama create aidapal -f aidapal.modelfile
ollama list
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
<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.
Probado con Ollama 0.32.9 en:
aidapal <3aidapal de IDA Pro en IDAPython (p. ej., contexto).aidapal e implementar una arquitectura modular para conectar LLMs personalizados.