Ghidra 在创建 DWARFProgram 时抛出错误

逆向工程 吉德拉
2021-06-27 20:17:02

我正在尝试为 Ghidra 程序创建一个DWARFProgram我想提取函数调试符号。构建 DWARFProgram 时出现错误。

构造函数打印以下内容,然后抛出 NullPointerException:

Elf symbol table section .dynsym linked to string table section .dynstr
Elf symbol table section .symtab linked to string table section .strtab
Elf relocation table section .rel.dyn linked to symbol table section .dynsym affecting PT_LOAD
Reading DWARF debug string table

我的代码(使用 Jython):

monitor = ConsoleTaskMonitor()
program = ghidraProject.openProgram('/', programName, False)
binfile = File(programDir + programName)
options = DWARFImportOptions()
sectionProvider = ElfSectionProvider(binfile)
dwarfProg = DWARFProgram(program, options, monitor, sectionProvider)

控制台截图: 矮人程序错误信息

1个回答

我认为您应该先在较小的程序上调试脚本。您传递的参数可能不正确(我没有您的完整程序,因此我无法判断)。也有可能矮部分已损坏,无法辨认。

以下程序在我的机器上运行良好。

monitor = ConsoleTaskMonitor()
options = DWARFImportOptions()
sectionProvider = ElfSectionProvider.createSectionProviderFor(currentProgram)
dwarfProg = DWARFProgram(currentProgram, options, monitor, sectionProvider)