ELF和用C
问题描述:
我学习了一个测试,我有以下问题虚拟地址: 在ELF头据说该文件的入口点是在0x8049058ELF和用C
代码:
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
在哪里exacly做一个入口点“Take”me? 哪些部分靠近它?
答
如果你是迂腐的,没有足够的信息来说明。如果我们假设_start
是入口点(这是典型的,但不是强制性的),那么假定x
的大小是4字节,并且在x
和_start
之间没有别的,则x
的地址显然是_start - 4
。请注意,.data
部分中的入口点不正常。
对于第二个代码,除非您检查二进制文件中的标题,否则无法确定.bss
与.data
或_start
的关系。
可以确定.data部分中的所有变量将严格地位于条目的“上方”?因为它在同一部分? – lolu
是的,它们不在本节内重新排序。 – Jester