gpt4 book ai didi

linux - 将可执行文件中的变量映射到内存段

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:49 25 4
gpt4 key购买 nike

Linux 中是否有一种工具可以将可执行文件中的不同变量映射到相应的内存段。

例如,如果我的可执行文件中有一个已初始化的全局变量 int x = 10,该工具应显示该变量属于可执行文件的 .data 段采用类似于下面显示的格式。

x.data

最佳答案

如果您的可执行文件没有被剥离,那么 nm command (另见 Linux manpage for nm )将做你想做的事——它打印一个符号名称/地址/类型表。它有多个输出选项;在 Linux 上,“sysv”样式的格式几乎可以满足您的需求。样本:

$ nm -f sysv /bin/perl

Symbols from /bin/perl:

Name Value Class Type Size Line Section

Bases.3 |000000000813019c| d | OBJECT|0000000000000014| |.dataF0convert |00000000080c6905| t | FUNC|00000000000000c6| |.textPL_AMG_names |0000000008137c80| D | OBJECT|0000000000000108| |.dataPL_No |0000000008137904| D | OBJECT|0000000000000004| |.dataPL_Yes |0000000008137900| D | OBJECT|0000000000000004| |.data[ ... ]PL_curinterp |0000000008138e88| B | OBJECT|0000000000000004| |.bssPL_do_undump |0000000008137910| D | OBJECT|0000000000000001| |.dataPL_dollarzero_mutex |0000000008138e58| B | OBJECT|0000000000000018| |.bssPL_fold |000000000812c020| R | OBJECT|0000000000000100| |.rodataPL_fold_locale |0000000008135c80| D | OBJECT|0000000000000100| |.dataPL_force_link_funcs |0000000008137da0| D | OBJECT|00000000000006c8| |.dataPL_freq |000000000812c120| R | OBJECT|0000000000000100| |.rodataPL_hexdigit |0000000008137908| D | OBJECT|0000000000000004| |.dataPL_memory_wrap |000000000812bfa3| R | OBJECT|0000000000000013| |.rodata[ ... ]PerlIO_setpos |0000000008112134| T | FUNC|00000000000000a6| |.textPerlIO_sprintf |00000000081122ee| T | FUNC|000000000000002a| |.textPerlIO_stdio |0000000008138720| D | OBJECT|0000000000000070| |.dataPerlIO_stdoutf |0000000008112066| T | FUNC|000000000000003b| |.text[ ... ]

If you do create an object file from the C sourcecode:

    int x = 10;

并通过 nm 运行它,它给出:

$ nm -f sysv xxxx.oSymbols from xxxx.o:Name         Value            Class        Type         Size     Line  Sectionx           |0000000000000000|   D  |    OBJECT|0000000000000004|     |.data

注意它报告的Value字段是所述符号的地址,而不是变量的内容。

如果您在其上运行 strip,该表将被删除并且所有 nm 都会告诉您“没有符号”。

关于linux - 将可执行文件中的变量映射到内存段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9596578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com