binexport
binexport copied to clipboard
Error using BinExport with Ghidra 11.3.2
When trying to use BinExport with Ghidra 11.3.2 I get an exception like below. This occurs when trying to export a program after installing the extension. The BinExport extension continues to work with Ghidra 11.3.1, so I am unsure what changed with the new version of Ghidra to cause this.
class com.google.security.zynamics.BinExport$BinExport2 tried to access method 'com.google.protobuf.LazyStringArrayList com.google.protobuf.LazyStringArrayList.emptyList()' (com.google.security.zynamics.BinExport$BinExport2 and com.google.protobuf.LazyStringArrayList are in unnamed module of loader ghidra.GhidraClassLoader @483bf400)
java.lang.IllegalAccessError: class com.google.security.zynamics.BinExport$BinExport2 tried to access method 'com.google.protobuf.LazyStringArrayList com.google.protobuf.LazyStringArrayList.emptyList()' (com.google.security.zynamics.BinExport$BinExport2 and com.google.protobuf.LazyStringArrayList are in unnamed module of loader ghidra.GhidraClassLoader @483bf400)
at com.google.security.zynamics.BinExport$BinExport2.<init>(BinExport.java:19352)
at com.google.security.zynamics.BinExport$BinExport2.<clinit>(BinExport.java:25089)
at com.google.security.binexport.BinExport2Builder.<init>(BinExport2Builder.java:68)
at com.google.security.binexport.BinExportExporter.export(BinExportExporter.java:92)
at ghidra.app.plugin.core.exporter.ExporterDialog$ExportTask.run(ExporterDialog.java:578)
at ghidra.util.task.Task.monitoredRun(Task.java:134)
at ghidra.util.task.TaskRunner.lambda$startTaskThread$0(TaskRunner.java:106)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
---------------------------------------------------
Build Date: 2025-Apr-15 1250 EDT
Ghidra Version: 11.3.2
Java Home: /usr/lib/jvm/java-21-openjdk-amd64
Also seeing this.
Broken for me too:
class com.google.security.zynamics.BinExport$BinExport2 tried to access method 'com.google.protobuf.LazyStringArrayList com.google.protobuf.LazyStringArrayList.emptyList()' (com.google.security.zynamics.BinExport$BinExport2 and com.google.protobuf.LazyStringArrayList are in unnamed module of loader ghidra.GhidraClassLoader @483bf400)
java.lang.IllegalAccessError: class com.google.security.zynamics.BinExport$BinExport2 tried to access method 'com.google.protobuf.LazyStringArrayList com.google.protobuf.LazyStringArrayList.emptyList()' (com.google.security.zynamics.BinExport$BinExport2 and com.google.protobuf.LazyStringArrayList are in unnamed module of loader ghidra.GhidraClassLoader @483bf400)
at com.google.security.zynamics.BinExport$BinExport2.<init>(BinExport.java:19352)
at com.google.security.zynamics.BinExport$BinExport2.<clinit>(BinExport.java:25089)
at com.google.security.binexport.BinExport2Builder.<init>(BinExport2Builder.java:81)
at com.google.security.binexport.BinExportExporter.export(BinExportExporter.java:92)
at ghidra.app.plugin.core.exporter.ExporterDialog$ExportTask.run(ExporterDialog.java:578)
at ghidra.util.task.Task.monitoredRun(Task.java:134)
at ghidra.util.task.TaskRunner.lambda$startTaskThread$0(TaskRunner.java:106)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
---------------------------------------------------
Build Date: 2025-Apr-15
Ghidra Version: 11.3.2
Java Home: /nix/store/qagnl38l96xcbx17ll0v9zswhcl1nqw6-openjdk-21.0.7+6/lib/openjdk
JVM Version: N/A 21.0.7
OS: Linux 6.12.28 amd64
I tested and successfully reproduced the behavior. Building with protobuf 3.21.12 and #155 fixed it. The PR solves the compile-time errors.
#155 has been merged.