首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Ghidra中导出函数的二进制代码(Ghidra脚本)

如何在Ghidra中导出函数的二进制代码(Ghidra脚本)
EN

Stack Overflow用户
提问于 2020-12-05 01:59:37
回答 1查看 440关注 0票数 0

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

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

函数签名:导出(java.io.File文件、DomainObject domainObj、AddressSetView addrSet、TaskMonitor监视器)

我应该如何填写这些参数?有没有更好的方法呢?

代码语言:javascript
复制
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, ???)
EN

回答 1

Stack Overflow用户

发布于 2021-03-14 02:40:27

monitor是GhidraScript从FlatProgramAPI继承的字段。您问题中的???应该是monitor

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

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65148478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档