
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 fração das falhas no desenvolvimento de software se deve ao fato de os programadores não compreenderem completamente todos os estados possíveis em que seu código pode executar." -- John Carmack
"Ele roda Doom?" -- https://canitrundoom.org/
O Oneiromancer é um assistente de engenharia reversa que utiliza um LLM executado localmente, ajustado (fine-tuned) para pseudocódigo do Hex-Rays, a fim de 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. - Integração fácil com o extrator de pseudocódigo haruspex e IDEs populares.
- Descrição do código, nome recomendado da função e sugestões de renomeação de variáveis são impressos no terminal.
- O pseudocódigo melhorado 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 depois 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
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 https://github.com/0xdea/oneiromancer
cd oneiromancer
cargo build --release
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 no diretório em que você baixou os arquivos:
ollama create aidapal -f aidapal.modelfile ollama list
Uso
- Execute o oneiromancer da seguinte forma:
export OLLAMA_BASEURL=custom_baseurl # se não definido, o padrão será usado export OLLAMA_MODEL=custom_model # se não definido, o padrão será usado oneiromancer <target_file>.c - Encontre o pseudocódigo melhorado em
<target_file>.out.c:vim <target_file>.out.c code <target_file>.out.c
[!TIP] Para obter melhores resultados, envie 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) na Atredis Partners por seu LLM ajustado
aidapal<3
Changelog
TODO
- Melhorar o gerenciamento de arquivos de saída com versionamento e/ou um diretório de saída.
- Implementar outros recursos do plugin
aidapalIDAPython para o IDA Pro (por exemplo, contexto). - Integrar com haruspex e idalib.
- Implementar um protocolo de "relatório minoritário" (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 conectar LLMs personalizados.