我有以下程序:
int b2[4];
int foo()
{
static int b2[10];
b2[5] = 4;
}
int main()
{
static int b2[10];
int b[5];
b[0] = 1;
b2[9] = 4;
int *ptr = b;
int c = *(ptr + 10);
foo();
return 0;
}
我想区分函数 foo、main 和 global 中定义的不同 b2 数组。我可以使用以下方法收集所有符号:
symbols = set(currentProgram.getSymbolTable().getAllSymbols(True))
for s in symbols:
print(s.getName())
但是,没有办法区分静态(在函数命名空间中)和全局符号。
Ghidra GUI 向我展示了类似的东西:b2.1913 <- main , b2.1917 <- foo, b2 <- global。
因此,我可以使用 GUI 轻松区分这些符号。
在此先感谢您的帮助。