我之前看过关于 ELF 魔法的讨论,最近是在这个安全堆栈交换问题中的评论。我之前已经看到它提到过,我在我自己的引导日志中也看到过它。但我不确定它是什么。
elf 上的手册页有点超出我的理解,因为我不使用 C 或更低级别的语言。
作为使用 Linux 作为日常操作系统的人,ELF 是什么?
cas*_*sey 42
直接从您引用的手册页:
elf - format of Executable and Linking Format (ELF) files
Run Code Online (Sandbox Code Playgroud)
ELF 定义了 Linux 使用的可执行文件的二进制格式。当你调用一个可执行文件时,操作系统必须知道如何将可执行文件正确加载到内存中,如何解析动态库依赖关系,然后从哪里跳转到加载的可执行文件以开始执行它。ELF 格式提供此信息。ELF 魔法用于识别 ELF 文件,它只是文件的前几个字节:
% od -c -N 16 /bin/ls
0000000 177 E L F 002 001 001 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000020
Run Code Online (Sandbox Code Playgroud)
或者
% readelf -h /bin/ls | grep Magic
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Run Code Online (Sandbox Code Playgroud)
这 16 个字节明确地将文件标识为 ELF 可执行文件。许多文件格式都有“魔法”字节来完成相同的任务——识别文件类型。
归档时间: |
|
查看次数: |
21242 次 |
最近记录: |