
oneiromancer v0.9.1
Reverse-Engineering-Assistent, der ein lokal laufendes LLM nutzt, um bei der Pseudocode-Analyse zu unterstützen.
oneiromancer
"Ein großer Teil der Fehler in der Softwareentwicklung ist darauf zurückzuführen, dass Programmierer nicht alle möglichen Zustände vollständig verstehen, in denen ihr Code ausgeführt werden kann." -- John Carmack
"Kann es Doom ausführen?" -- https://canitrundoom.org/
Oneiromancer ist ein Reverse-Engineering-Assistent, der ein lokal laufendes LLM verwendet, das für Hex-Rays Pseudocode feinabgestimmt wurde, um bei der Codeanalyse zu helfen. Es kann eine Funktion oder einen kleineren Codeausschnitt analysieren und liefert eine High-Level-Beschreibung dessen, was der Code tut, einen empfohlenen Namen für die Funktion und Vorschläge zur Umbenennung von Variablen, basierend auf den Ergebnissen der Analyse.

Funktionen
- Plattformübergreifende Unterstützung für das feinabgestimmte LLM aidapal basierend auf
mistral-7b-instruct. - Einfache Integration mit dem Pseudocode-Extraktor haruspex und gängigen IDEs.
- Codebeschreibung, empfohlener Funktionsname und Vorschläge zur Variablenumbenennung werden im Terminal ausgegeben.
- Der verbesserte Pseudocode jeder analysierten Funktion wird in einer separaten Datei zur einfachen Überprüfung gespeichert.
- Externe Crates können
analyze_codeoderanalyze_fileaufrufen, um Pseudocode zu analysieren und anschließend die Analyseergebnisse zu verarbeiten.
Artikel
Siehe auch
- 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
Installation
Der einfachste Weg, die neueste Version zu erhalten, ist über crates.io:
cargo install oneiromancer --locked
Um es als Bibliothek zu installieren, führen Sie den folgenden Befehl in Ihrem Projektverzeichnis aus:
cargo add oneiromancer
Kompilieren
Alternativ können Sie aus dem Quellcode bauen:
git clone --depth 1 https://github.com/0xdea/oneiromancer
cd oneiromancer
cargo build --release --locked
Konfiguration
- Laden Sie Ollama herunter und installieren Sie es.
- Laden Sie die feinabgestimmten Gewichte und die Ollama-Modelfile von Hugging Face herunter:
wget https://huggingface.co/AverageBusinessUser/aidapal/resolve/main/aidapal-8k.Q4_K_M.gguf wget https://huggingface.co/AverageBusinessUser/aidapal/resolve/main/aidapal.modelfile - Konfigurieren Sie Ollama, indem Sie die folgenden Befehle in dem Verzeichnis ausführen, in das Sie die Dateien heruntergeladen haben:
ollama create aidapal -f aidapal.modelfile ollama list
Verwendung
- Führen Sie oneiromancer wie folgt aus:
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 - Finden Sie den verbesserten Pseudocode in
<target_file>.out.c:vim <target_file>.out.c code <target_file>.out.c
[!TIP] Für beste Ergebnisse übergeben Sie jeweils eine Funktion zur Analyse an das LLM.
Kompatibilität
Getestet mit Ollama 0.32.9 auf:
- Apple macOS Tahoe 26.5.2
- Ubuntu Linux 24.04.2 LTS
- Microsoft Windows 11 23H2
Danksagungen
- Chris Bellows (@AverageBusinessUser) bei Atredis Partners für sein feinabgestimmtes LLM
aidapal<3
Changelog
TODO
- Verbesserung der Ausgabedateiverwaltung mit Versionierung und/oder einem Ausgabeverzeichnis.
- Implementierung weiterer Funktionen des IDAPython
aidapalIDA Pro Plugins (z. B. Kontext). - Integration mit haruspex und idalib.
- Implementierung eines "Minority Report"-Protokolls (d. h. drei Abfragen durchführen und die besten Antworten auswählen).
- Erwägung eines Refactorings der Variablenumbenennung, um potenzielle Codebeschädigung zu verhindern.
- Untersuchung weiterer Anwendungsfälle für das
aidapalLLM und Implementierung einer modularen Architektur zum Einbinden benutzerdefinierter LLMs.