Как мне экспортировать двоичный код функции в Ghidra (скрипт Ghidra)

#jython-2.7 #ghidra

#jython-2.7 #ghidra

Вопрос:

Я хочу написать скрипт ghidra на python (jython), который экспортирует в файл .bin двоичный код всех функций в текущей программе.

Я придумал этот код, но я не уверен, как мне следует использовать функцию export() в классе BinaryExporter

Подпись функции: экспорт (java.io .Файл file, DomainObject domainObj, AddressSetView addrSet, монитор TaskMonitor)

Как я должен заполнить аргументы? Есть ли лучший способ сделать это?

 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:UsersMeDesktoptarget_file.bin", "w") as f:
    for asv in function_ASVs:
        ret = exporter.export(f, currentProgram, asv, ???)
 

Ответ №1:

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:UsersMeDesktoptarget_file.bin", "w") as f:
    ret = exporter.export(f, currentProgram, asv, monitor)