我需要从已编译的c程序中获取有关全局变量的信息。我在here中提出了类似的问题。
我现在遇到的问题是我尝试提取变量信息的程序非常大,只需要4秒钟就可以获得文本中的树(readelf -w[i] file.out
)。然后我必须解析树来回跳动才能到达我需要的地方。例如,如果变量的类型为const unsigned char * volatile MyVariable
,那么我将不得不导航到树的5个不同节点,如果程序包含1000个变量,那么需要一段时间才能得到我需要的东西。
所以我的问题是如何更好地利用readelf命令来实现我的需要。 readelf -w[i] file.out
命令为我提供了我需要的更多信息(每个函数,subrutine,局部变量等)。例如,我不是通过该命令的输出来获取全局变量,而是使用readelf -s --wide file.out
命令来获取变量。该命令只会给我变量的名称,所以我仍然需要在树中查看变量是否为整数。
在this link的第237页,我相信有一个例子,说明如何获取有关类型的信息。这是一张照片:
我花了大约15秒来解析我需要的东西,但仍有几个bug。如果我不必重新发明轮子并更好地使用readelf命令,那将是很好的。