我们都知道,在典型的程序中,存在一些引用。

编译时,链接器将在符号重定位步骤期间将所有内存引用转换为具体的内存地址。通过进行一些快速实验(IDA-Pro 6.4),我注意到 IDA-Pro 可以帮助将这些内存地址提升回符号。
但是,我发现 IDA-Pro 的符号化功能可能会被某些情况误导。所以我感兴趣的是计算 IDA-Pro 恢复了多少引用。请问有没有办法获取“IDA-Pro恢复了多少内存引用”的信息?
非常感谢@Jason 的回答,但我想做的不是收集所有标签。下面是一个例子:

请注意sub_80484AE地址中的符号0x804a020。请注意,处理0x08, 0x04, 0x84, 0xae后的二进制文件中的 4 字节数据被视为一个符号,因为它等于 function 的起始地址sub_80484AE。这是真实的。但是,由于没有指令指向 address 0x804A020,因此没有namein address 0x804a020。
我要收集的是所有带有对应地址的符号,例如,在上面的例子中,我需要收集这个
0x804a018 : sub_804847b
0x804a01dc : _strchr
0x804a020 : sub_80484AE
我够清楚了吗?如果有人能给我一些帮助,我真的很感激!非常感谢!!
- - - - - - - - - - - - - - - - - - - - - - - - 更新 - -------------------------------------
我还不够清楚吗?
让我这样说吧。我可以获取以前由链接器解析的所有符号信息吗?比如说,在我更新的图片中,在编译链接器期间解析了三个符号,内存地址为 0x804a018、0x804a01dc、0x804a020。IDA-Pro 会恢复其中的一些信息。所以我想收集所有IDA恢复的符号信息(这个信息可以是函数名,也可以是跳转表的条目,也可以是跳转目标,如图所示)。
请注意,我想以每个解析符号与内存地址的格式恢复信息。例如在图片中,它应该是:
0x804a018 : sub_804847b
0x804a01dc : _strchr
0x804a020 : sub_80484AE
我正在考虑遍历二进制文件的所有内存地址,并检查每个指令的操作数(或内容,如果它在数据部分中),看看它是否是一个恢复的符号。如果是这样,我会将这个符号与这条指令(或数据)的内存地址一起存储。
但基本上如何检查指令中的 oprend 是否是一个符号?