4

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

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

谢谢

4

2 回答 2

2

如果编译为 Mach-O

使用otoolcctools.

如果编译为 ELF

您应该能够使用objdumpand/or来做到这一点readelf

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

于 2012-06-08T04:16:58.663 回答
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代码的解释,如U, s,S等。


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

$ strings <some binary> -o -t x

将为您提供字符串文字及其偏移量的列表。

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

于 2021-05-13T09:16:46.853 回答