如何解决elf标头中的p_align是什么?
我正在研究逆向工程。
readelf something
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
PHDR 0x000040 0x0000000000400040 0x0000000000400040 0x0001f8 0x0001f8 R 0x8
INTERP 0x000238 0x0000000000400238 0x0000000000400238 0x00001c 0x00001c R 0x1
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
LOAD 0x000000 0x0000000000400000 0x0000000000400000 0x0006f0 0x0006f0 R E 0x200000
LOAD 0x000e10 0x0000000000600e10 0x0000000000600e10 0x000220 0x000228 RW 0x200000
DYNAMIC 0x000e20 0x0000000000600e20 0x0000000000600e20 0x0001d0 0x0001d0 RW 0x8
NOTE 0x000254 0x0000000000400254 0x0000000000400254 0x000044 0x000044 R 0x4
GNU_EH_FRAME 0x0005b4 0x00000000004005b4 0x00000000004005b4 0x00003c 0x00003c R 0x4
GNU_STACK 0x000000 0x0000000000000000 0x0000000000000000 0x000000 0x000000 RW 0x10
GNU_RELRO 0x000e10 0x0000000000600e10 0x0000000000600e10 0x0001f0 0x0001f0 R 0x1
在这里。 对齐列是什么意思?
我阅读了man(5)elf.h和一些文档,但我仍然不完全知道。 并且在堆栈溢出中对此有一些疑问,但是没有答案。
能向我解释吗?
解决方法
如果您使用的是Linux,请在终端中键入man elf
,然后阅读有关ELF格式的最新文档。 Align
输出中的字段readelf
是程序头文件的p_align
。这是online docs的一部分:
p_align
此成员保存段与之对齐的值 内存和文件中。可装载过程段必须具有一致 p_vaddr和p_offset的值,以页面大小为模。零值 一种意味着不需要对齐。否则,p_align应该是 正整数为2的幂,且p_vaddr应该等于p_offset, 取模p_align。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。