Skip to content

Error loading ebpf file #8034

Open
Open
@melardev

Description

@melardev

Describe the bug
ebpf processor NullPointerException when loading a solana program file, solana is based on eBPF, there is an IDA extension for this, but Ghidra it fails

To Reproduce

# dump the Banana Gun program
solana program dump BANANAjs7FJiPQqJTGFzkZJndT9o7UmKiYYGaJz6frGu banana_gun_router.so

Open it in Ghidra:

Cannot invoke "ghidra.app.util.bin.format.elf.ElfSectionHeader.getNameAsString()" because the return value of "ghidra.app.util.bin.format.elf.ElfRelocationTable.getSectionToBeRelocated()" is null
java.lang.NullPointerException: Cannot invoke "ghidra.app.util.bin.format.elf.ElfSectionHeader.getNameAsString()" because the return value of "ghidra.app.util.bin.format.elf.ElfRelocationTable.getSectionToBeRelocated()" is null
	at ghidra.app.util.bin.format.elf.relocation.eBPF_ElfRelocationHandler.relocate(eBPF_ElfRelocationHandler.java:50)
	at ghidra.app.util.bin.format.elf.relocation.ElfRelocationContext.processRelocation(ElfRelocationContext.java:112)
	at ghidra.app.util.opinion.ElfProgramBuilder.processRelocationTableEntries(ElfProgramBuilder.java:1048)
	at ghidra.app.util.opinion.ElfProgramBuilder.processRelocationTable(ElfProgramBuilder.java:950)
	at ghidra.app.util.opinion.ElfProgramBuilder.processRelocations(ElfProgramBuilder.java:885)
	at ghidra.app.util.opinion.ElfProgramBuilder.load(ElfProgramBuilder.java:171)
	at ghidra.app.util.opinion.ElfProgramBuilder.loadElf(ElfProgramBuilder.java:108)
	at ghidra.app.util.opinion.ElfLoader.load(ElfLoader.java:147)
	at ghidra.app.util.opinion.AbstractLibrarySupportLoader.doLoad(AbstractLibrarySupportLoader.java:811)
	at ghidra.app.util.opinion.AbstractLibrarySupportLoader.loadProgram(AbstractLibrarySupportLoader.java:100)
	at ghidra.app.util.opinion.AbstractProgramLoader.load(AbstractProgramLoader.java:131)
	at ghidra.plugin.importer.ImporterUtilities.importSingleFile(ImporterUtilities.java:388)
	at ghidra.plugin.importer.ImporterDialog.lambda$okCallback$7(ImporterDialog.java:347)
	at ghidra.util.task.TaskBuilder$TaskBuilderTask.run(TaskBuilder.java:306)
	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:1623)

---------------------------------------------------
Build Date: 2023-Aug-29 1442 EDT
Ghidra Version: 10.3.3
Java Home: /usr/lib/jvm/jdk-20
JVM Version: Oracle Corporation 20
OS: Linux 6.8.0-57-generic amd64


Expected behavior
Load the program successfully

Screenshots

Image

Environment (please complete the following information):

  • OS: Linux Ubuntu
  • Java Version: JDK 24
  • Ghidra Version: 10.3.3
  • Ghidra Origin: Github official release .zip file

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions