reverse-engineering-assistant icon indicating copy to clipboard operation
reverse-engineering-assistant copied to clipboard

Ghidra error: Error constructing plugin: class reva.RevaPlugin

Open Degamisu opened this issue 1 year ago โ€ข 17 comments

Very new to this plugin and it looks very exciting! I cannot get this to work with Ghidra however, as it spits out Error constructing plugin: class reva.RevaPlugin. Running ghidra-11.1.1

ghidra.framework.plugintool.util.PluginException: Error constructing plugin: class reva.RevaPlugin
	at ghidra.framework.plugintool.util.PluginUtils.instantiatePlugin(PluginUtils.java:58)
	at ghidra.framework.plugintool.PluginManager.addPlugins(PluginManager.java:146)
	at ghidra.framework.plugintool.PluginTool.lambda$addPlugins$3(PluginTool.java:918)
	at ghidra.framework.plugintool.PluginTool.lambda$checkedRunSwingNow$12(PluginTool.java:1658)
	at ghidra.util.Swing.doRun(Swing.java:292)
	at ghidra.util.Swing.runNow(Swing.java:208)
	at ghidra.util.Swing.runNow(Swing.java:163)
	at ghidra.framework.plugintool.PluginTool.checkedRunSwingNow(PluginTool.java:1656)
	at ghidra.framework.plugintool.PluginTool.addPlugins(PluginTool.java:916)
	at ghidra.framework.plugintool.DefaultPluginInstaller.addPlugins(DefaultPluginInstaller.java:40)
	at ghidra.framework.plugintool.PluginConfigurationModel.addPlugin(PluginConfigurationModel.java:139)
	at ghidra.framework.plugintool.dialog.PluginInstallerTableModel.addPlugin(PluginInstallerTableModel.java:170)
	at ghidra.framework.plugintool.dialog.PluginInstallerTableModel.setValueAt(PluginInstallerTableModel.java:135)
	at java.desktop/javax.swing.JTable.setValueAt(JTable.java:2787)
	at java.desktop/javax.swing.JTable.editingStopped(JTable.java:4785)
	at java.desktop/javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:152)
	at java.desktop/javax.swing.DefaultCellEditor$EditorDelegate.stopCellEditing(DefaultCellEditor.java:375)
	at java.desktop/javax.swing.DefaultCellEditor.stopCellEditing(DefaultCellEditor.java:234)

It continues on and on.

Degamisu avatar Jul 26 '24 00:07 Degamisu

Thank you for trying! I am going to do some fresh installs and add some integration tests, there have been issues installing for other too.

cyberkaida avatar Jul 26 '24 04:07 cyberkaida

Getting the same thing on a fresh install. Ghidra installed via flathub on Arch KDE Plasma

Error constructing plugin: class reva.RevaPlugin
ghidra.framework.plugintool.util.PluginException: Error constructing plugin: class reva.RevaPlugin
	at ghidra.framework.plugintool.util.PluginUtils.instantiatePlugin(PluginUtils.java:58)
	at ghidra.framework.plugintool.PluginManager.addPlugins(PluginManager.java:146)
	at ghidra.framework.plugintool.PluginTool.lambda$addPlugins$3(PluginTool.java:918)
	at ghidra.framework.plugintool.PluginTool.lambda$checkedRunSwingNow$12(PluginTool.java:1658)
	at ghidra.util.Swing.doRun(Swing.java:292)
	at ghidra.util.Swing.runNow(Swing.java:208)
	at ghidra.util.Swing.runNow(Swing.java:163)
	at ghidra.framework.plugintool.PluginTool.checkedRunSwingNow(PluginTool.java:1656)
	at ghidra.framework.plugintool.PluginTool.addPlugins(PluginTool.java:916)
	at ghidra.framework.plugintool.DefaultPluginInstaller.addPlugins(DefaultPluginInstaller.java:40)
	at ghidra.framework.plugintool.PluginConfigurationModel.addPlugin(PluginConfigurationModel.java:139)
	at ghidra.framework.plugintool.dialog.PluginInstallerTableModel.addPlugin(PluginInstallerTableModel.java:170)
	at ghidra.framework.plugintool.dialog.PluginInstallerTableModel.setValueAt(PluginInstallerTableModel.java:135)
	at java.desktop/javax.swing.JTable.setValueAt(JTable.java:2787)
	at java.desktop/javax.swing.JTable.editingStopped(JTable.java:4785)
	at java.desktop/javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:152)
	at java.desktop/javax.swing.DefaultCellEditor$EditorDelegate.stopCellEditing(DefaultCellEditor.java:375)
	at java.desktop/javax.swing.DefaultCellEditor.stopCellEditing(DefaultCellEditor.java:234)
	at java.desktop/javax.swing.DefaultCellEditor$EditorDelegate.actionPerformed(DefaultCellEditor.java:392)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
	at java.desktop/javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:411)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
	at java.desktop/java.awt.Component.processEvent(Component.java:6391)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.repostEvent(BasicTableUI.java:987)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1203)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
	at java.desktop/java.awt.Component.processEvent(Component.java:6391)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:775)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:747)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:744)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
	at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234)
	at java.desktop/java.awt.Dialog.show(Dialog.java:1080)
	at java.desktop/java.awt.Component.show(Component.java:1728)
	at java.desktop/java.awt.Component.setVisible(Component.java:1675)
	at java.desktop/java.awt.Window.setVisible(Window.java:1036)
	at java.desktop/java.awt.Dialog.setVisible(Dialog.java:1016)
	at docking.DockingDialog.setVisible(DockingDialog.java:351)
	at docking.DockingWindowManager.lambda$doShowDialog$6(DockingWindowManager.java:1856)
	at ghidra.util.Swing.doRun(Swing.java:292)
	at ghidra.util.Swing.runNow(Swing.java:208)
	at ghidra.util.Swing.runNow(Swing.java:163)
	at docking.DockingWindowManager.doShowDialog(DockingWindowManager.java:1860)
	at docking.DockingWindowManager.showDialog(DockingWindowManager.java:1809)
	at docking.AbstractDockingTool.showDialog(AbstractDockingTool.java:168)
	at ghidra.framework.project.tool.ExtensionManager.propmtToConfigureNewPlugins(ExtensionManager.java:73)
	at ghidra.framework.project.tool.ExtensionManager.checkForNewExtensions(ExtensionManager.java:60)
	at ghidra.framework.project.tool.GhidraTool.setVisible(GhidraTool.java:146)
	at ghidra.framework.project.tool.WorkspaceImpl.lambda$runTool$0(WorkspaceImpl.java:95)
	at ghidra.util.Swing.lambda$runNow$1(Swing.java:148)
	at ghidra.util.Swing.lambda$runNow$2(Swing.java:227)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
	at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234)
	at java.desktop/java.awt.Dialog.show(Dialog.java:1080)
	at java.desktop/java.awt.Component.show(Component.java:1728)
	at java.desktop/java.awt.Component.setVisible(Component.java:1675)
	at java.desktop/java.awt.Window.setVisible(Window.java:1036)
	at java.desktop/java.awt.Dialog.setVisible(Dialog.java:1016)
	at docking.DockingDialog.setVisible(DockingDialog.java:351)
	at docking.DockingWindowManager.lambda$doShowDialog$6(DockingWindowManager.java:1856)
	at ghidra.util.Swing.doRun(Swing.java:292)
	at ghidra.util.Swing.runNow(Swing.java:208)
	at ghidra.util.Swing.runNow(Swing.java:163)
	at docking.DockingWindowManager.doShowDialog(DockingWindowManager.java:1860)
	at docking.DockingWindowManager.showDialog(DockingWindowManager.java:1809)
	at ghidra.util.task.TaskDialog.lambda$doShow$7(TaskDialog.java:373)
	at ghidra.util.Swing.runIfSwingOrRunLater(Swing.java:124)
	at ghidra.util.task.TaskDialog.doShow(TaskDialog.java:370)
	at ghidra.util.task.TaskDialog.doShowModal(TaskDialog.java:350)
	at ghidra.util.task.TaskDialog.show(TaskDialog.java:324)
	at ghidra.util.task.TaskRunner.lambda$showTaskDialog$1(TaskRunner.java:123)
	at ghidra.util.Swing.runIfSwingOrRunLater(Swing.java:124)
	at ghidra.util.task.TaskRunner.showTaskDialog(TaskRunner.java:120)
	at ghidra.util.task.TaskRunner.run(TaskRunner.java:54)
	at ghidra.util.task.TaskLauncher.<init>(TaskLauncher.java:221)
	at ghidra.util.task.TaskLauncher.<init>(TaskLauncher.java:203)
	at ghidra.framework.project.tool.WorkspaceImpl.launchSwing(WorkspaceImpl.java:117)
	at ghidra.framework.project.tool.WorkspaceImpl.runTool(WorkspaceImpl.java:92)
	at ghidra.framework.project.tool.ToolServicesImpl.defaultLaunch(ToolServicesImpl.java:209)
	at ghidra.framework.project.tool.ToolServicesImpl.launchTool(ToolServicesImpl.java:235)
	at ghidra.framework.main.ToolButton.openDomainFiles(ToolButton.java:564)
	at ghidra.framework.main.ToolButton$2.end(ToolButton.java:541)
	at ghidra.framework.main.ZoomImageRunner$1.end(ZoomImageRunner.java:54)
	at org.jdesktop.animation.timing.Animator.end(Animator.java:755)
	at org.jdesktop.animation.timing.Animator.stop(Animator.java:660)
	at org.jdesktop.animation.timing.Animator.timingEvent(Animator.java:732)
	at org.jdesktop.animation.timing.Animator.access$200(Animator.java:75)
	at org.jdesktop.animation.timing.Animator$TimerTarget.actionPerformed(Animator.java:1041)
	at java.desktop/javax.swing.Timer.fireActionPerformed(Timer.java:311)
	at java.desktop/javax.swing.Timer$DoPostEvent.run(Timer.java:243)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at ghidra.framework.plugintool.util.PluginUtils.instantiatePlugin(PluginUtils.java:46)
	... 152 more
Caused by: java.lang.NoClassDefFoundError: Could not initialize class reva.protocol.RevaGetDecompilation$RevaGetDecompilationResponse
	at reva.protocol.RevaDecompilationServiceGrpc.getGetDecompilationMethod(RevaDecompilationServiceGrpc.java:40)
	at reva.protocol.RevaDecompilationServiceGrpc.getServiceDescriptor(RevaDecompilationServiceGrpc.java:498)
	at reva.protocol.RevaDecompilationServiceGrpc.bindService(RevaDecompilationServiceGrpc.java:421)
	at reva.protocol.RevaDecompilationServiceGrpc$RevaDecompilationServiceImplBase.bindService(RevaDecompilationServiceGrpc.java:226)
	at io.grpc.internal.ServerImplBuilder.addService(ServerImplBuilder.java:143)
	at io.grpc.internal.ServerImplBuilder.addService(ServerImplBuilder.java:57)
	at io.grpc.ForwardingServerBuilder.addService(ForwardingServerBuilder.java:77)
	at reva.RevaPlugin.<init>(RevaPlugin.java:278)
	... 158 more
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.IllegalAccessError: class reva.protocol.RevaGetDecompilation$RevaGetDecompilationResponse tried to access method 'com.google.protobuf.LazyStringArrayList com.google.protobuf.LazyStringArrayList.emptyList()' (reva.protocol.RevaGetDecompilation$RevaGetDecompilationResponse and com.google.protobuf.LazyStringArrayList are in unnamed module of loader ghidra.GhidraClassLoader @3d04a311) [in thread "AWT-EventQueue-0"]
	at reva.protocol.RevaGetDecompilation$RevaGetDecompilationResponse.<init>(RevaGetDecompilation.java:1003)
	at reva.protocol.RevaGetDecompilation$RevaGetDecompilationResponse.<clinit>(RevaGetDecompilation.java:2696)
	... 166 more

---------------------------------------------------
Build Date: 2024-Jun-15 1007 UTC
Ghidra Version: 11.1.1
Java Home: /app/jdk
JVM Version: Flathub 17.0.11
OS: Linux 6.10.1-arch1-1 amd64```

too-soon avatar Jul 27 '24 14:07 too-soon

Thank you both! I will try to reproduce on my linux machine.

cyberkaida avatar Jul 28 '24 03:07 cyberkaida

I am not sure, I have seen this when the wrong version of Gradle is used (it does not pull the protobuf library and compile the protobufs correctly).

Are you building locally? Can you try the version from the CI?

https://github.com/cyberkaida/reverse-engineering-assistant/actions/runs/10129853390

I am using:

kaida@Kaidas-Maxbook ~ % gradle --version

------------------------------------------------------------
Gradle 7.6.4
------------------------------------------------------------

Build time:   2024-02-05 14:29:18 UTC
Revision:     e0bb3fc8cefad8432c9033cdfb12dc14facc9dd9

Kotlin:       1.7.10
Groovy:       3.0.13
Ant:          Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM:          17.0.11 (Homebrew 17.0.11+0)
OS:           Mac OS X 14.5 aarch64

cyberkaida avatar Jul 28 '24 07:07 cyberkaida

I am not sure, I have seen this when the wrong version of Gradle is used (it does not pull the protobuf library and compile the protobufs correctly).

Are you building locally? Can you try the version from the CI?

https://github.com/cyberkaida/reverse-engineering-assistant/actions/runs/10129853390

I am using:

kaida@Kaidas-Maxbook ~ % gradle --version

------------------------------------------------------------
Gradle 7.6.4
------------------------------------------------------------

Build time:   2024-02-05 14:29:18 UTC
Revision:     e0bb3fc8cefad8432c9033cdfb12dc14facc9dd9

Kotlin:       1.7.10
Groovy:       3.0.13
Ant:          Apache Ant(TM) version 1.10.13 compiled on January 4 2023
JVM:          17.0.11 (Homebrew 17.0.11+0)
OS:           Mac OS X 14.5 aarch64

It does work with the CI version. I'll try to build again soon but this fixes for now. Thanks!

too-soon avatar Jul 28 '24 11:07 too-soon

Interesting, I'm using windows currently (linux machine died ๐Ÿ˜ข ) and I'm not sure how to get this to work? I'm just trying to find the artifact download.

Update: Found it, going to run some tests now. Thanks!

Degamisu avatar Jul 28 '24 20:07 Degamisu

Tried it with the CI version, same error.

Degamisu avatar Jul 28 '24 20:07 Degamisu

Tried it with the CI version, same error.

Can you please tell me your gradle and Java version, can you do a build of the extension and attach the build logs?

I am trying to see if there is some problem in the Gradle script when it compiles the protobufs.

cyberkaida avatar Jul 29 '24 02:07 cyberkaida

Tried it with the CI version, same error.

I'm going to improve the CI and try to get it working on Windows. I had some trouble with the GitHub action I tried.

It is time to add some integration tests I think!

cyberkaida avatar Jul 31 '24 07:07 cyberkaida

Tried it with the CI version, same error.

Can you please tell me your gradle and Java version, can you do a build of the extension and attach the build logs?

I am trying to see if there is some problem in the Gradle script when it compiles the protobufs.

Yes sorry for the late reply, I will get this done as soon as possible.

Tried it with the CI version, same error.

I'm going to improve the CI and try to get it working on Windows. I had some trouble with the GitHub action I tried.

It is time to add some integration tests I think!

Indeed I believe that's the right idea!

Degamisu avatar Jul 31 '24 11:07 Degamisu

OK! CI for Windows and macOS is now added. Can you try the latest build?

cyberkaida avatar Aug 11 '24 02:08 cyberkaida

OK! CI for Windows and macOS is now added. Can you try the latest build?

Sure thing! I was having crazy trouble with building it. Testing now.

Update: Might be doing something wrong, same errors.

Error:

Error constructing plugin: class reva.RevaPlugin
ghidra.framework.plugintool.util.PluginException: Error constructing plugin: class reva.RevaPlugin
	at ghidra.framework.plugintool.util.PluginUtils.instantiatePlugin(PluginUtils.java:58)
	at ghidra.framework.plugintool.PluginManager.addPlugins(PluginManager.java:146)
	at ghidra.framework.plugintool.PluginTool.lambda$addPlugins$3(PluginTool.java:918)
	at ghidra.framework.plugintool.PluginTool.lambda$checkedRunSwingNow$12(PluginTool.java:1658)
	at ghidra.util.Swing.doRun(Swing.java:292)
	at ghidra.util.Swing.runNow(Swing.java:208)
	at ghidra.util.Swing.runNow(Swing.java:163)
	at ghidra.framework.plugintool.PluginTool.checkedRunSwingNow(PluginTool.java:1656)
	at ghidra.framework.plugintool.PluginTool.addPlugins(PluginTool.java:916)
	at ghidra.framework.plugintool.DefaultPluginInstaller.addPlugins(DefaultPluginInstaller.java:40)
	at ghidra.framework.plugintool.PluginConfigurationModel.addPlugin(PluginConfigurationModel.java:139)
	at ghidra.framework.plugintool.dialog.PluginInstallerTableModel.addPlugin(PluginInstallerTableModel.java:170)
	at ghidra.framework.plugintool.dialog.PluginInstallerTableModel.setValueAt(PluginInstallerTableModel.java:135)
	at java.desktop/javax.swing.JTable.setValueAt(JTable.java:2787)
	at java.desktop/javax.swing.JTable.editingStopped(JTable.java:4785)
	at java.desktop/javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:152)
	at java.desktop/javax.swing.DefaultCellEditor$EditorDelegate.stopCellEditing(DefaultCellEditor.java:375)
	at java.desktop/javax.swing.DefaultCellEditor.stopCellEditing(DefaultCellEditor.java:234)
	at java.desktop/javax.swing.DefaultCellEditor$EditorDelegate.actionPerformed(DefaultCellEditor.java:392)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
	at java.desktop/javax.swing.JToggleButton$ToggleButtonModel.setPressed(JToggleButton.java:411)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
	at java.desktop/java.awt.Component.processEvent(Component.java:6391)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.repostEvent(BasicTableUI.java:987)
	at java.desktop/javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1203)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6626)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
	at java.desktop/java.awt.Component.processEvent(Component.java:6391)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
	at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234)
	at java.desktop/java.awt.Dialog.show(Dialog.java:1080)
	at java.desktop/java.awt.Component.show(Component.java:1728)
	at java.desktop/java.awt.Component.setVisible(Component.java:1675)
	at java.desktop/java.awt.Window.setVisible(Window.java:1036)
	at java.desktop/java.awt.Dialog.setVisible(Dialog.java:1016)
	at docking.DockingDialog.setVisible(DockingDialog.java:351)
	at docking.DockingWindowManager.lambda$doShowDialog$6(DockingWindowManager.java:1856)
	at ghidra.util.Swing.doRun(Swing.java:292)
	at ghidra.util.Swing.runNow(Swing.java:208)
	at ghidra.util.Swing.runNow(Swing.java:163)
	at docking.DockingWindowManager.doShowDialog(DockingWindowManager.java:1860)
	at docking.DockingWindowManager.showDialog(DockingWindowManager.java:1809)
	at docking.AbstractDockingTool.showDialog(AbstractDockingTool.java:168)
	at ghidra.framework.plugintool.dialog.PluginManagerComponent.managePlugins(PluginManagerComponent.java:73)
	at ghidra.framework.plugintool.dialog.PluginManagerComponent$PluginPackageComponent.lambda$createConfigureHyperlink$1(PluginManagerComponent.java:196)
	at docking.widgets.HyperlinkComponent$1.hyperlinkUpdate(HyperlinkComponent.java:66)
	at java.desktop/javax.swing.JEditorPane.fireHyperlinkUpdate(JEditorPane.java:401)
	at java.desktop/javax.swing.text.html.HTMLEditorKit$LinkController.activateLink(HTMLEditorKit.java:906)
	at java.desktop/javax.swing.text.html.HTMLEditorKit$LinkController.mouseClicked(HTMLEditorKit.java:702)
	at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:278)
	at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:277)
	at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:277)
	at java.desktop/java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:277)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6629)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3389)
	at java.desktop/java.awt.Component.processEvent(Component.java:6391)
	at java.desktop/java.awt.Container.processEvent(Container.java:2266)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5001)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4584)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2310)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2780)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4833)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:746)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:744)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:743)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
	at ghidra.framework.plugintool.util.PluginUtils.instantiatePlugin(PluginUtils.java:46)
	... 121 more
Caused by: java.lang.NoClassDefFoundError: Could not initialize class reva.protocol.RevaGetDecompilation$RevaGetDecompilationResponse
	at reva.protocol.RevaDecompilationServiceGrpc.getGetDecompilationMethod(RevaDecompilationServiceGrpc.java:40)
	at reva.protocol.RevaDecompilationServiceGrpc.getServiceDescriptor(RevaDecompilationServiceGrpc.java:498)
	at reva.protocol.RevaDecompilationServiceGrpc.bindService(RevaDecompilationServiceGrpc.java:421)
	at reva.protocol.RevaDecompilationServiceGrpc$RevaDecompilationServiceImplBase.bindService(RevaDecompilationServiceGrpc.java:226)
	at io.grpc.internal.ServerImplBuilder.addService(ServerImplBuilder.java:143)
	at io.grpc.internal.ServerImplBuilder.addService(ServerImplBuilder.java:57)
	at io.grpc.ForwardingServerBuilder.addService(ForwardingServerBuilder.java:77)
	at reva.RevaPlugin.<init>(RevaPlugin.java:278)
	... 127 more
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.IllegalAccessError: class reva.protocol.RevaGetDecompilation$RevaGetDecompilationResponse tried to access method 'com.google.protobuf.LazyStringArrayList com.google.protobuf.LazyStringArrayList.emptyList()' (reva.protocol.RevaGetDecompilation$RevaGetDecompilationResponse and com.google.protobuf.LazyStringArrayList are in unnamed module of loader ghidra.GhidraClassLoader @38cccef) [in thread "AWT-EventQueue-0"]
	at reva.protocol.RevaGetDecompilation$RevaGetDecompilationResponse.<init>(RevaGetDecompilation.java:1003)
	at reva.protocol.RevaGetDecompilation$RevaGetDecompilationResponse.<clinit>(RevaGetDecompilation.java:2696)
	... 135 more

---------------------------------------------------
Build Date: 2024-Jun-14 1025 EDT
Ghidra Version: 11.1.1
Java Home: C:\Program Files\Java\jdk-17
JVM Version: Oracle Corporation 17.0.10
OS: Windows 11 10.0 amd64
Workstation: USERPC

Degamisu avatar Aug 11 '24 14:08 Degamisu

i have the same prb , on kali , cant build the extention or run it Cannot invoke "reva.RevaChatService.revaChat(String)" because "chat" is null java.lang.NullPointerException: Cannot invoke "reva.RevaChatService.revaChat(String)" because "chat" is null at reva.Analysis.RevaFunctionAnalyzer.lambda$added$0(RevaFunctionAnalyzer.java:38) at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133) at reva.Analysis.RevaFunctionAnalyzer.added(RevaFunctionAnalyzer.java:30) at ghidra.app.plugin.core.analysis.AnalysisScheduler.runAnalyzer(AnalysisScheduler.java:186) at ghidra.app.plugin.core.analysis.AnalysisTask.applyTo(AnalysisTask.java:39) at ghidra.app.plugin.core.analysis.AutoAnalysisManager$AnalysisTaskWrapper.run(AutoAnalysisManager.java:686) at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:786) at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:665) at ghidra.app.plugin.core.analysis.AutoAnalysisManager.startAnalysis(AutoAnalysisManager.java:630) at ghidra.app.plugin.core.analysis.AnalysisBackgroundCommand.applyTo(AnalysisBackgroundCommand.java:58) at ghidra.framework.plugintool.mgr.BackgroundCommandTask.run(BackgroundCommandTask.java:103) at ghidra.framework.plugintool.mgr.ToolTaskManager.run(ToolTaskManager.java:334) at java.base/java.lang.Thread.run(Thread.java:1575)


Build Date: 2023-Dec-23 2258 UTC Ghidra Version: 11.0 Java Home: /usr/lib/jvm/java-23-openjdk-amd64 JVM Version: Debian 23 OS: Linux 6.10.9-amd64 amd64

  • NAME=ghidra-assistant
  • rm -f 'dist/*'
  • gradle Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true

Task :compileJava FAILED

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':compileJava'.

Error while evaluating property 'javaCompiler' of task ':compileJava'. Failed to calculate the value of task ':compileJava' property 'javaCompiler'. > Toolchain installation '/usr/lib/jvm/java-23-openjdk-amd64' does not provide the required capabilities: [JAVA_COMPILER]

  • Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. Get more help at https://help.gradle.org.

BUILD FAILED in 369ms 5 actionable tasks: 1 executed, 4 up-to-date

kofa2002 avatar Oct 04 '24 00:10 kofa2002

Currently trying to install this on my Ghidra 11.2.1, as it looks fantastically promising.

I can get ghidra-assistant to build, using the latest version of Gradle (supposedly >8.5 is required for Ghidra 11.2.1), but I then get the class error when loading the plugin in Ghidra. If I try using Gradle 7.6.4 and jdk 17.0.12, ghidra-assistant doesn't build due to the Gradle version mismatch.

I tried the pre-build ghidra-assistant (supposedly for Ghidra 11.1.1) and I also get the class error when enabling the plugin.

I forgot to mention that I'm on Windows.

Has there been any progress?

Oggo87 avatar Nov 17 '24 19:11 Oggo87

I am refactoring for Ghidra 11.3 and the new Python 3 support.

I would recommend trying the older version of Ghidra or waiting for 11.3 support. I can release an early version for you built on the development version of 11.3.

The new Python 3 support will allow removing the gRPC and make the design much more simple.

If you are interested in testing please let me know! ๐Ÿ’œ๐Ÿ’œ๐Ÿ’œ

cyberkaida avatar Nov 18 '24 01:11 cyberkaida

Iยดd be happy to test, but I can also wait until 11.3 (I don't want to put more work on you).

I quickly tried v3.0.0-alpha2 on a fresh Ghidra 11.1.1 install, but still got the error Error constructing plugin: class reva.RevaPlugin when loading the plugin

Oggo87 avatar Nov 18 '24 02:11 Oggo87

I am refactoring for Ghidra 11.3 and the new Python 3 support.

I would recommend trying the older version of Ghidra or waiting for 11.3 support. I can release an early version for you built on the development version of 11.3.

The new Python 3 support will allow removing the gRPC and make the design much more simple.

If you are interested in testing please let me know! ๐Ÿ’œ๐Ÿ’œ๐Ÿ’œ

I would also be happy to test, seems like a while since this issue has been posted, so hopefully revisions since then would improve this issue. I'll be tracking the full repository for updates.

Degamisu avatar Nov 24 '24 14:11 Degamisu

I have finished the core of the re-write for Ghidra 11.3 and have moved to an MCP server. Please try the latest version, built from source I think you will get good results!

cyberkaida avatar May 24 '25 08:05 cyberkaida