从已编译的二进制文件中获取宏值(使用调试)

时间:2011-05-17 12:14:24

标签: linux debugging macros binary decompiling

我需要确定编译二进制文件的特定宏的值。

该文件是Linux共享库文件。

有可能吗?

1 个答案:

答案 0 :(得分:5)

鉴于宏是由预处理器处理的,即使实际的编译器也不知道它们。唯一的选择是对鳕鱼进行逆向工程,找到你知道使用宏的地方并从中提取值。

编辑:我刚检查了DWARF规范,标准定义了.debug_macinfo部分,尤其是存储有关宏的调试信息,此部分包含每个已定义的DW_MACINFO_define记录宏。

因此,如果您拥有该库的调试版本,则可以尝试使用dwarfdump -mreadelf --debug-dump=macro来提取此信息。

但是:我已经在我的系统中的几个库上尝试过了,并且它们都没有包含任何宏记录。默认情况下gcc不会发出它们,必须使用gcc -g3编译库(交换机会增加调试信息级别)。我想,这对你来说是个坏消息。