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

Let*_*_Be 4 linux debugging binary macros decompiling

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

该文件是Linux共享库文件。

可能吗?

Cod*_*ers 5

假定宏是由预处理器处理的,即使实际的编译器也不知道它们。唯一的选择是对鳕鱼进行逆向工程,找到您知道使用宏的位置,然后从中提取值。

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

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

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