列出可执行文件中的全局变

时间:2012-06-08 04:01:48

标签: c xcode macos gcc otool

如何在可执行文件中转储所有全局变量和地址偏移量?

这是在os x上,使用gcc编译的xcode开发的应用程序。

谢谢

2 个答案:

答案 0 :(得分:2)

如果编译为Mach-O

使用otoolcctools

如果编译为ELF

您应该可以使用objdump和/或readelf

执行此操作

我手边没有* nix系统,但是objdump -s -j .data应该让你足够接近。

答案 1 :(得分:0)

从 macOS 上的可执行文件(原始问题)获取全局变量列表及其偏移量的一种简单方法是使用 nm 工具。没有任何额外的键,它给出了变量及其偏移量。

示例:

$ nm <some binary>
...
                 U __ZTVN10__cxxabiv117__class_type_infoE
                 U __ZTVN10__cxxabiv120__si_class_type_infoE
000000010006e248 s __ZTVN7testing17TestEventListenerE
000000010006e1c0 s __ZTVN7testing22EmptyTestEventListenerE
000000010006dfa8 s __ZTVN7testing31TestPartResultReporterInterfaceE
000000010006d860 S __ZTVN7testing32ScopedFakeTestPartResultReporterE
000000010006d8d8 S __ZTVN7testing4TestE
...

检查 man nm 以获取对 UsS 等代码的解释


如果您还想查找字符串常量,还有另一个工具 strings

$ strings <some binary> -o -t x

会给你一个字符串文字及其偏移量的列表。

有关详细信息,请参阅 man strings