zoukankan      html  css  js  c++  java
  • ELF学习--装载过程

    当我们在linux bash下执行ELF程序时,Linux系统是怎样装载和执行的呢?

    1.bash进程fork出子进程

    2.在bash的子进程中调用execve系统调用来执行指定的ELF。

    3.execve系统调用的入口是sys_execve,在sys_execve会调用do_execve

    4.在do_execve中会读取可执行文件的前128个字节。这128个字节用来判断可执行文件是哪种类型。

    5.do_execve读取了128个字节的文件头后,调用serch_binary_handle去搜索匹配合适的可执行文件装载处理过程。search_binary_handle会通过判断文件头部的魔数确定文件的格式。ELF的装载处理过程是load_elf_binary.

    6.在load_elf_binary中,检查文件格式的有效性后,寻找动态链接的.interp 段。根据ELF可执行文件的program headers,建立可执行文件和虚拟内存的映射。将execev系统调用的返回地址改成ELF可执行文件的入口地址。当execev返回时就可执行ELF文件。

  • 相关阅读:
    移动端的头文件
    时间倒计时
    H5 判断应用是否打开或是下载
    创建 XMLHttpRequest 对象
    JS 发送POST
    总结题
    uploadify 插件,去了进度条
    PC 拖动 以百分比计算
    pc 拖动效果,拖动带范围
    spring.net 在demo中的分析
  • 原文地址:https://www.cnblogs.com/fellow1988/p/6166271.html
Copyright © 2011-2022 走看看