zoukankan      html  css  js  c++  java
  • 2020-2021-1 20209324 《Linux内核原理与分析》第八周作业

    《linux内核原理与分析》第八周作业

    这个作业属于哪个课程 2020-2021-1 Linux内核原理与分析
    这个作业要求在哪里 2020-2021-1Linux内核原理与分析第八周作业
    这个作业的目标 跟踪分析一个execve系统调用内核处理函数、了解ELF文件格式
    作业正文 本博客链接

    一、实验:跟踪分析一个execve系统调用内核处理函数

    1.更新menu,将test_exec变成test.c

    2.加载入gdb,并在sys_execve等处加断点,单步执行

    3.退出调试状态后输入

    redelf -h hello
    

    来查看ELF头部

    二、ELF文件格式

    ELF由四部分组成:ELF头、程序头、节和节头表,其中ELF头的位置固定,其余不一定
    ELF文件头结构定义在“/usr/include/elf.h”头文件下,ELF文件有32位版本和64位版本,故其头文件结构也有32位结构和64位结构,分别定义为Elf32_Ehdr和Elf64_Ehdr。两种版本文件内容一样,只是有些成员的大小不一样。以32位版本的文件头结构Elf32_Ehdr为例:

    typedef struct{
        unsigned char e_ident[EI_NIDENT];
        Elf32_Half e_type;//类别
        Elf32_Half e_machine;//数据
        Elf32_Word e_version;//版本
        Elf32_Addr e_entry;//入口点地址
        Elf32_Off  e_phoff;//程序头起始位置
        Elf32_Off  e_shoff;//节头起始位置
        Elf32_Word e_flags;//标志
        Elf32_Half e_ehsize;//文件头大小
        Elf32_Half e_phentsize;//程序头大小
        Elf32_Half e_phnum;//程序头数量
        Elf32_Half e_shentsize;//节头大小
        Elf32_Half e_shnum;//节头数量![](https://img2020.cnblogs.com/blog/2175016/202011/2175016-20201127144550449-1630798143.png)
    
    
        Elf32_Half e_shstrndx;//字符串表段索引
    }Elf32_Ehdr;
    

    ELF中有三种不同类型的目标文件:可重定位文件、可执行文件、共享目标文件:
    (1)可重定位文件:这种文件一般是中间文件,还需要继续处理。由编译器和汇编器创建,一个源代码文件会生成一个可重定位文件。用来和其他的目标文件一起来创建一个可执行文件、静态库文件或者共享目标文件(即动态库文件)。读者在编译Linux内核时可能会注意到,每个内核源代码.c文件都会生成一个同名的.o文件,该文件即为可重定位目标文件,最后所有的.o文件会链接为一个文件,即Linux内核。
    (2)可执行文件:一般由多个可重定位文件结合生成,是完成了所有重定位工作和符号解析(除了运行时解析的共享库符号)的文件,文件中保存着一个用来执行的程序。
    (3)共享目标文件:共享库,是指可以被可执行文件或其他库文件使用的目标文件。Linux下共享库后缀为.so的文件,so代表shared object。
    ELF文件的作用是参与程序的链接(建立一个程序)和程序的执行(运行一个程序)。

  • 相关阅读:
    060821流水账
    060721流水账
    060421流水账
    [Tips] 更新oh my zsh
    [Tips] updraftplus备份wordpress
    [Tips] SSH免密登陆
    [Notes] 基于阿里云的SSL在容器化wordpress中部署https服务
    [Tips] wordpress添加文章计数
    [Notes] 容器化部署wordpress
    [Notes] pandas 保存hdf5时numpy array遇到的性能warning
  • 原文地址:https://www.cnblogs.com/uujuwajy/p/14047173.html
Copyright © 2011-2022 走看看