我有兴趣打开一个二进制文件(.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。 ,然后执行:

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


它可以正常工作并为我提供功能。

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

#1 楼

我找到的解决方法是:拆卸后就可以了。