【问题标题】:ELF and virtual address in CC中的ELF和虚拟地址
【发布时间】:2015-07-20 15:43:48
【问题描述】:

我正在准备考试,我有以下问题: 在 ELF 头中,据说文件的入口点在 0x8049058

代码是:

section .data
    x: dd 3

    _start: mov ecx, [x]
    ...
    ...
    ... ;more code

问:x 在运行时的虚拟地址是什么?

正确答案是0x0849054

有人可以解释一下吗? 如果 x 如下所示,它仍然在同一个地址吗?

section .bss
x: resb 4

section .data

_start: mov ecx, [x]
...
...
... ;more code

入口点“带走”我在哪里? 以及靠近它的部分是什么?

【问题讨论】:

    标签: assembly architecture elf virtual-address-space


    【解决方案1】:

    如果你是迂腐的,没有足够的信息可以告诉。如果我们假设_start 是入口点(这是典型的,但不是强制性的),那么假设x 的大小是4 个字节,并且x_start 之间没有其他内容,那么地址x 显然是 _start - 4。请注意,在.data 部分中有入口点是不正常的。

    对于第二个代码,您无法判断 .bss 相对于 .data_start 的位置,除非您检查二进制文件中的标头。

    【讨论】:

    • 可以假设 .data 部分中的所有变量都将完全“高于”条目吗?因为它在同一个部分?
    • 是的,它们不会在该部分中重新排序。
    猜你喜欢
    • 1970-01-01
    • 2020-11-28
    • 2011-09-07
    • 2012-04-03
    • 1970-01-01
    • 2011-01-11
    • 2021-07-25
    • 1970-01-01
    • 2019-12-06
    相关资源
    最近更新 更多