0

我想在 python (jython) 中编写一个 ghidra 脚本,将当前程序中所有函数的二进制代码导出到 .bin 文件。

我想出了这段代码,但我不确定我应该如何在BinaryExporter类中使用 export() 函数

函数签名:export(java.io.File file, DomainObject domainObj, AddressSetView addrSet, TaskMonitor monitor)

我应该如何填写论据?有没有更好的方法来做到这一点?

from ghidra.app.util.exporter import BinaryExporter


function_ASVs = [] #all functions address set view
exporter = BinaryExporter()

fm = currentProgram.getFunctionManager()
functions = fm.getFunctions(True)
for f in functions:
    function_ASVs.append(f.getBody())


with open("C:\Users\Me\Desktop\target_file.bin", "w") as f:
    for asv in function_ASVs:
        ret = exporter.export(f, currentProgram, asv, ???)
4

1 回答 1

0

monitor是 GhidraScript 从 FlatProgramAPI 继承的一个字段。你的???问题应该是monitor.

我不使用 python,但我认为您可以将脚本压缩为:

from ghidra.app.util.exporter import BinaryExporter

asv = AddressSet()
exporter = BinaryExporter()

for f in currentProgram.getFunctionManager().getFunctions(True):
    asv.add(f.getBody())

with open("C:\Users\Me\Desktop\target_file.bin", "w") as f:
    ret = exporter.export(f, currentProgram, asv, monitor)
于 2021-03-13T18:40:26.563 回答