如何在可执行文件中转储所有全局变量和地址偏移量?
这是在os x上,使用gcc编译的xcode开发的应用程序。
谢谢
答案 0 :(得分:2)
使用otool
或cctools
。
您应该可以使用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
以获取对 U
、s
、S
等代码的解释
如果您还想查找字符串常量,还有另一个工具 strings
:
$ strings <some binary> -o -t x
会给你一个字符串文字及其偏移量的列表。
有关详细信息,请参阅 man strings
。