
oneiromancer v0.9.1
Assistente de engenharia reversa que usa um LLM executado localmente para auxiliar na análise de pseudocódigo.
oneiromancer
"Uma grande parte das falhas no desenvolvimento de software deve-se ao fato de que os programadores não compreendem totalmente todos os possíveis estados em que seu código pode ser executado." -- John Carmack
"Será que roda Doom?" -- https://canitrundoom.org/
Oneiromancer é um assistente de engenharia reversa que utiliza um LLM executado localmente, ajustado especificamente para pseudocódigo do Hex-Rays, para auxiliar na análise de código. Ele pode analisar uma função ou um trecho de código menor, retornando uma descrição de alto nível do que o código faz, um nome recomendado para a função e sugestões de renomeação de variáveis, com base nos resultados da análise.

Recursos
- Suporte multiplataforma para o LLM ajustado aidapal baseado em
mistral-7b-instruct. - Fácil integração com o extrator de pseudocódigo haruspex e IDEs populares.
- Descrição do código, nome recomendado para a função e sugestões de renomeação de variáveis são exibidos no terminal.
- O pseudocódigo aprimorado de cada função analisada é salvo em um arquivo separado para fácil inspeção.
- Crates externos podem invocar
analyze_codeouanalyze_filepara analisar pseudocódigo e então processar os resultados da análise.
Artigo
Veja também
- 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
Instalação
A maneira mais fácil de obter a versão mais recente é via crates.io:
cargo install oneiromancer --locked
Para instalar como biblioteca, execute o seguinte comando no diretório do seu projeto:
cargo add oneiromancer
Compilação
Alternativamente, você pode compilar a partir do código-fonte:
git clone --depth 1 https://github.com/0xdea/oneiromancer
cd oneiromancer
cargo build --release --locked
Configuração
- Baixe e instale o Ollama.
- Baixe os pesos ajustados e o modelfile do Ollama do 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 - Configure o Ollama executando os seguintes comandos dentro do diretório no qual você baixou os arquivos:
ollama create aidapal -f aidapal.modelfile ollama list
Uso
- Execute o oneiromancer da seguinte forma:
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 - Encontre o pseudocódigo aprimorado em
<target_file>.out.c:vim <target_file>.out.c code <target_file>.out.c
[!TIP] Para melhores resultados, submeta uma função por vez para ser analisada pelo LLM.
Compatibilidade
Testado com Ollama 0.32.9 em:
- Apple macOS Tahoe 26.5.2
- Ubuntu Linux 24.04.2 LTS
- Microsoft Windows 11 23H2
Créditos
- Chris Bellows (@AverageBusinessUser) da Atredis Partners por seu LLM ajustado
aidapal<3
Changelog
TODO
- Melhorar o tratamento do arquivo de saída com versionamento e/ou um diretório de saída.
- Implementar outros recursos do plugin
aidapaldo IDAPython para IDA Pro (por exemplo, contexto). - Integrar com haruspex e idalib.
- Implementar um protocolo de "minority report" (ou seja, fazer três consultas e selecionar as melhores respostas).
- Considerar uma refatoração da renomeação de variáveis para evitar possível corrupção de código.
- Investigar outros casos de uso para o LLM
aidapale implementar uma arquitetura modular para plugar LLMs personalizados.