Ghidra Headless Analyzer - 创建函数

逆向工程 Python 吉德拉
2021-06-27 04:07:36

我有兴趣打开一个二进制文件(.bin,没有analyzeHeadless.bat架构信息),并用(没有GUI的Ghidra版本)分析它

我知道文件的架构是什么,所以我将它作为标志传递给分析器。

我的命令行是: analyzeHeadless.bat <project_location> <project_name> -import <my_file> -processor <my_known_processor> -postscript <my_script.py> -scriptPath <path>

my_script.py 是:

for block in getMemoryBlocks():
    current = block.getStart().getOffset()
    end = block.getEnd().getOffset()
    addr = currentProgram.getAddressFactory().getAddress(hex(current).replace('L', ''))
    disassemble(addr)
    current +=1

func = getFirstFunction()
print("First func is:    " + str(func))

我尝试反汇编每个地址(看起来 Ghigra 不会自己做),然后我想打印第一个函数。

问题是: func似乎是None.

但是如果在无头执行之后我在 GUI 中打开项目Ghidra,并执行:

func = getFirstFunction()
print("First func is:    " + str(func))

它有效并为我提供了功能。

任何想法我做错了什么?我猜有一些分析在后台运行并创建了函数。如何在我的 python 脚本中运行它?

1个回答

我找到的解决方案是:

analyze(currentProgram)

拆机后就可以了。