我一直在尝试使用 Ghidra 从二进制文件中提取函数原型。到目前为止,我所做的是使用 Ghidra 包含的“反编译”脚本,并使用 python 通过生成的文本文件过滤掉函数原型。但是,这种方法似乎很麻烦,有时在更改编译器选项时无法产生预期的结果。我觉得可能有更快的方法来获得这些。给定一个二进制文件,我的要求是获得所有函数原型,例如float strtof_l(char *__nptr,char **__endptr,__locale_t __loc)没有函数体。是否有任何现有的脚本来执行此操作?或者我可以循环使用 API 中的方法。非常感谢你。
使用 Ghidra 获取所有函数原型的方法
逆向工程
二元分析
固件
雷达2
吉德拉
2021-06-27 07:58:47
1个回答
您可以使用FunctionManager获取当前程序中的所有函数,然后从中迭代并获取每个函数的签名。
fm = currentProgram.getFunctionManager()
functions = fm.getFunctions(True)
for f in functions:
print(f.getSignature().getPrototypeString())
输出:
Signatures.py> Running...
char * strcpy(char * __dest, char * __src)
int mkdir(char * __path, __mode_t __mode)
int fclose(FILE * __stream)
int printf(char * __format, ...)
void * memset(void * __s, int __c, size_t __n)
void * memcpy(void * __dest, void * __src, size_t __n)
FILE * fopen(char * __filename, char * __modes)
char * strcat(char * __dest, char * __src)
...
其它你可能感兴趣的问题