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

C 列出可执行文件中的全局变量,c,xcode,macos,gcc,otool,C,Xcode,Macos,Gcc,Otool,如何在可执行文件中转储所有全局变量和地址偏移 这是在OSX上,应用程序是用gcc编译的xcode开发的 谢谢如果编译为Mach-O 使用或使用cctools 如果编译为ELF 您应该能够使用objdump和/或readelf完成此操作 我手头没有*nix系统,但是objdump-s-j.data应该已经足够接近了。一个简单的方法是使用nm工具来获取全局变量列表及其相对于macOS上可执行文件的偏移量(原始问题)。在没有任何附加键的情况下,它会给出变量及其偏移量 例如: $ nm <some

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

这是在OSX上,应用程序是用gcc编译的xcode开发的

谢谢

如果编译为Mach-O 使用或使用
cctools

如果编译为ELF 您应该能够使用
objdump
和/或
readelf
完成此操作


我手头没有*nix系统,但是
objdump-s-j.data
应该已经足够接近了。

一个简单的方法是使用
nm
工具来获取全局变量列表及其相对于macOS上可执行文件的偏移量(原始问题)。在没有任何附加键的情况下,它会给出变量及其偏移量

例如:

$ 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 strings

这是一个OS X应用程序。它没有编译成ELF。除非安装libelf和elftools,否则没有objdump。如何使用otools获取全局变量?
$ strings <some binary> -o -t x