iris-ghidra: Installation scheitert mit Ghidra 12.2 (JDK 25, LE/LX-Loader kompiliert nicht) #367
Labels
No labels
herkunft/alpha-feedback
status
blockiert
status
zu-testen
typ
bug
typ
docs
typ
enhancement
typ
feature
typ
idea
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
iris/iris-plugins#367
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Befund
Die Installation von
iris-ghidrascheitert auf einem frisch eingerichteten Mac im Hookpost_install:post_install: /bin/bash fehlgeschlagen (Exit 1): > Task :compileJava FAILED. Gemeldet auf dem MacBook; dort nicht erreichbar, nachgestellt auf dem Entwicklungs-Mac mit Ghidra 12.2 aus dem Release-Zip.Zwei Ursachen, beide belegt:
openjdk@25). Ghidra nennt sein JDK selbst:application.java.min=21(12.1.4) und=25(12.2). Mit JDK 21 meldet Gradle „Ungültiges Quellrelease: 25“; auch jeder spätereanalyzeHeadless-Lauf bräuchte JDK 25.ghidra.app.util.bin.format.Writeablegibt es in 12.1.4 (Base.jar), in 12.2 nicht mehr (DOSHeader.java:8). Der Loader ist Fremdcode (yetmorecode/ghidra-lx-loader) und nur für DOS-Programme im LE/LX-Format nötig; sein Fehlschlag bricht aber die ganze Installation ab.Folge:
iris-rea-recherche(brauchtiris-ghidra) lässt sich dort ebenfalls nicht installieren.Ziel
application.java.minder installierten Ghidra gelesen (Homebrewopenjdk@N, sonstJAVA_HOME, wenn es neu genug ist).doctorzeigt den Loader und Gradle als optional.Warum
Eine Plugin-Installation darf nicht an einer Nebenfunktion scheitern, und der Hook muss mit der Ghidra-Version zurechtkommen, die Homebrew heute ausliefert.
PR #368 gemergt: fix(iris-ghidra): JDK nach Ghidra-Version, Loader optional, Import erneut versuchen (0.2.1) (#367)
http://docker:3000/iris/iris-plugins/pulls/368
Commits:
iris-ghidra0.2.1 ist veröffentlicht und behebt die Installation mit Ghidra 12.2.Befund: Gemeldet vom MacBook („post_install …
Task :compileJavaFAILED“). Das MacBook war nicht erreichbar; nachgestellt auf dem Entwicklungs-Mac mit dem Ghidra-12.2-Release-Zip und einem JDK 25, jeweils im Temp-Ordner. Zwei Ursachen, beide belegt:openjdk@25), Ghidra nennt sein JDK selbst (application.java.min21 bei 12.1.4, 25 bei 12.2). Mit JDK 21 meldet Gradle „Ungültiges Quellrelease: 25“.ghidra.app.util.bin.format.Writeablegibt es in 12.1.4, in 12.2 nicht mehr. Sein Fehlschlag brach die ganze Installation ab, obwohl er nur für DOS-Programme im LE/LX-Format nötig ist.Dazu beim Testen gefunden: Ein fehlgeschlagener erster Import hinterließ ein Projekt, das
iris-ghidrafür fertig hielt (Prüfung aufproject.prp); jeder weitere Lauf scheiterte an „program file(s) not found“, bis man--forcenahm.Geändert:
application.java.minder installierten Ghidra: Homebrewopenjdk@N, sonst ein ausdrücklich gesetztes JAVA_HOME (wenn neu genug), zuletzt das neuesteopenjdk.installholt bei Bedarfopenjdk@N.~/Library/Application Support/Iris/iris-ghidra/loader-build.log.doctorzeigt Loader und Gradle als optional.has_programprüft die Datenbankdatei unteriris.rep/idata; ein fehlgeschlagener Import wird beim nächsten Lauf neu versucht.PLAN.mdmit Lessons Learned.Geprüft: 46 Tests grün (22 neu: JDK-Wahl, Loader-Toleranz,
has_program, Wiederherstellung nach einem echten fehlgeschlagenen Import). Drei Regeln ausgebaut (JDK fest 21, Loader-Fehler als Abbruch, altehas_program-Prüfung): die Tests wurden rot. Gegen Ghidra 12.2 mit JDK 25: 23 von 24 alten Tests grün, darunter alle Abfragen (xrefs,callers,callees,find-string,find-const). Der Hook im Fehlerszenario (12.2, Loader baut nicht): Exit-Code 0 mit Warnung. Dry-Run bestanden, Registry nach dem Pull geprüft (0.2.0 und 0.2.1).Nicht geprüft: Die Installation auf dem MacBook selbst (nicht erreichbar). Der Dekompilierer unter Ghidra 12.2 auf dem Mac: Der Release-Zip enthält die nativen Teile nur für Linux und Windows (die Homebrew-Formel baut sie aus dem Quelltext), der eine Test mit
decompileschlug im Zip-Aufbau deshalb fehl, das ist kein Plugin-Fehler, aber auch nicht bestätigt.Grenzen: Mit Ghidra 12.2 sind DOS-Programme im LE/LX-Format nicht lesbar, solange der Loader nicht für 12.2 angepasst ist (Fremdcode, nicht von uns).
Offen: Erneut installieren auf dem MacBook und das Ergebnis zurückmelden; danach lässt sich
iris-rea-recherchedort installieren (es brauchtiris-ghidra).PR #369 gemergt: fix(iris-ghidra): LE/LX-Loader für Ghidra 12.2, gepinnt und mit Korrektur (0.2.2) (#367)
http://docker:3000/iris/iris-plugins/pulls/369
Commits:
iris-ghidra0.2.2 ist veröffentlicht: DOS-Programme im LE/LX-Format lassen sich jetzt auch mit Ghidra 12.2 lesen.Befund: Nach 0.2.1 lief die Installation mit Ghidra 12.2 durch, der LE/LX-Loader (Fremdcode) wurde aber nicht gebaut: Er importiert
ghidra.app.util.bin.format.Writeable, die es in 12.2 nicht mehr gibt (nur inDOSHeader.java, drei Stellen). Beim echten Hook-Lauf zusätzlich gefunden: Der Build lief im Verzeichnisl, Gradle benennt die Erweiterung nach dem Verzeichnis, sie landete alsExtensions/l,doctormeldete den Loader als fehlend, und jede Installation baute neu.Geändert:
loader/ghidra-12.2.patch(drei Zeilen):DOSHeaderimplementiertWriteablenicht mehr. Wird vor dem Bau auf den Loader angewendet.60bae51gepinnt (LOADER_COMMIT), statt bei jeder Installation den jeweils neuesten Fremdcode von GitHub zu bauen.ghidra-lx-loader(LOADER_NAME), die Erweiterung landet dort, woloader_dir()unddoctorsie suchen; ein zweiter Hook-Lauf ist wiederholbar.loader/*.patchins Paket; Version 0.2.2, Änderungstext, Changelog, Anleitung,PLAN.mdmit Lessons Learned.Geprüft: 50 Tests grün (4 neu, darunter einer, der den Patch per
git apply --checkgegen den echten gepinnten Commit prüft). Drei Regeln ausgebaut (Verzeichnisname, Patch nicht angewendet, Commit nicht gepinnt): die Tests wurden rot. Mit Ghidra 12.2 und JDK 25 (Release-Zip und Temurin im Temp-Ordner): der Loader baut; ein echtes DOS4GW-LE-Programm (168 KB, Watcom) wird alswatcom:LE:32:defaultmit 353 Funktionen und 291 Strings importiert, ein großes (1,2 MB) mit 1051 Funktionen und 791 Strings. Der gepatchte Loader baut auch gegen Ghidra 12.1.4 mit JDK 21. Das gebaute Paket entpackt und daraus den Hook gegen 12.2 laufen lassen: Exit-Code 0,doctorerkennt den Loader, danach die Analyse mit dem Skript aus dem Paket. Ghidra 12.2 öffnet Projekte, die 12.1.4 angelegt hat, der Rückweg scheitert mit Ghidras eigener Meldung. Dry-Run bestanden, Registry nach dem Pull geprüft (0.2.0, 0.2.1, 0.2.2).Nicht geprüft: Die Installation auf dem MacBook (dort nicht erreichbar). Der Dekompilierer unter Ghidra 12.2 auf dem Mac: Der Release-Zip enthält die nativen Teile nur für Linux und Windows,
decompileund ein Lauf ohne--ohne-pseudocodeließen sich im Aufbau deshalb nicht prüfen. Ob die Programme unter 12.2 inhaltlich so zerlegt werden wie unter 12.1.4 (nur die Zähler sind gemessen, nicht der Pseudocode).Grenzen: Der gepinnte Loader-Stand ist von Hand aktualisiert: Wenn Upstream später eine neue Ghidra-Version unterstützt, muss
LOADER_COMMIT(und ggf. der Patch) nachgezogen werden.Offen: Erneut auf dem MacBook installieren und das Ergebnis zurückmelden.
Bestätigt vom Nutzer (2026-11-06):
iris-ghidra0.2.2 ist auf dem MacBook installiert (Plugin-Karte „Installiert 0.2.2“). Damit ist die Installation mit Ghidra 12.2 dort belegt. Weiter nicht geprüft: ein echter Lauf (Analyse einer Datei) auf dem MacBook, der Dekompilierer unter Ghidra 12.2 auf dem Mac und DOS-Programme im LE/LX-Format mit dem reparierten Loader dort.