我有兴趣打开一个二进制文件(.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 脚本中运行它?