Linux中可执行程序的装载和执行

张建帮 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

1 可执行程序的由来

一个.c源文件是如何变为一个可执行文件的?
大致的步骤如下(以linux下的gcc为例):

  1. 预处理:gcc -E -o hello.cpp hello.c -m32,这一步主要是进行一些宏的替换,得到的仍然是一个文本文件
  2. 编译:gcc -x cpp-ouput -S -o hello.s hello.cpp -m32,这一步会将c代码翻译成汇编语言
  3. 汇编:gcc -x assembler -c hello.s -o hello.o -m32,将编译阶段生成的汇编代码(.S文件)转变为目标
    文件(.o),这一步得到的目标文件已经是ELF格式的二进制文件了,但还不能直接运行,需要和库文件链接在
    一起才可以运行,默认使用动态库进行链接
  4. 链接:gcc -o hello-static hello.o -m32 -static,将多个目标文件(.o文件)链接成ELF格式的可执行文件

可以总结成下图(省略了预编译的过程):

可执行文件的生成过程

2 可执行文件的格式

为了更好的了解可执行程序的装载与执行,这里我们需要了解一下可执行文件的格式。

在不同的操作系统中,可执行文件的格式可能会有不同,比如在window下,可执行文件的格式为PE(装过系统的同学对这个肯定不会陌生,全称为Portable Executable),而在linux下,则为ELF(Executeable and linkable format) ,这里我们重点讨论ELF格式,上面提到过的.o目标文件和linux下的可执行文件都是属于这种格式的。

我们可以在linux下的命令行中使用 readelf -h excuteableFile 来查看一个ELF文件的头部信息:

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Linux二进制分析》是一本介绍分析Linux二进制文件的PDF文档。本书的目的是帮助读者了解Linux系统二进制文件的结构和内容,以及如何进行分析和调试。这本书按照逻辑顺序分为多个章节,每个章节探讨了不同的主题。 第一章介绍了二进制文件的基础知识,包括二进制文件的类型、结构和常见的文件格式。通过学习这些基础知识,读者可以对Linux二进制文件有一个整体的了解。 第二章讨论了在Linux系统进行二进制文件分析的工具和技术。这部分内容涵盖了命令行工具、调试器和反汇编器的使用方法,以及一些常见的二进制文件分析技术。 第三章以一个实际的案例为例,介绍了如何通过分析二进制文件来理解程序的功能和行为。这个案例涉及了静态分析和动态分析的技术,读者可以通过跟随案例学习如何应用这些技术。 第四章包含了一些高级的二进制文件分析技术,如符号动态执行、模糊测试和漏洞挖掘等。这些技术需要一定的专业知识和经验,但对于希望深入了解Linux二进制文件分析的读者来说,是非常有用的。 总的来说,这本《Linux二进制分析》PDF为读者提供了系统而全面的关于Linux二进制文件分析的知识。无论是初学者还是有经验的分析师,都可以从获得有价值的信息和技巧。 ### 回答2: 《Linux二进制分析PDF》是一本介绍Linux二进制分析的电子书籍。通过对该书的阅读和学习,可以了解Linux操作系统二进制文件的结构、特性和功能。 首先,该书会详细介绍Linux二进制文件的基本概念和核心组成部分。包括ELF(Executable and Linkable Format)格式的介绍,这是Linux系统常见的二进制文件格式。通过了解ELF格式,可以深入理解可执行文件、共享库和目标文件的结构和功能。 其次,该书会介绍ELF文件的各个节(section)和段(segment)。节是ELF文件存储数据和代码的逻辑块,而段是指逻辑上相关的节的集合。了解节和段的细节对于进行二进制分析非常重要,可以帮助我们理解程序的内部结构和运行机制。 此外,该书还会介绍动态链接(Dynamic Linking)和装载器(Loader)。动态链接是Linux的一种链接方式,通过将共享库与可执行文件动态地链接在一起,提高了代码的复用性和运行效率。装载器是Linux系统负责将可执行文件加载到内存并执行的组件。了解动态链接和装载器的工作原理,可以帮助我们理解程序运行的整个过程。 最后,该书还会介绍一些常见的二进制分析工具和技术。例如,调试器(Debugger)可以帮助我们追踪程序执行过程和查找bug。反汇编器(Disassembler)可以将二进制文件转换为可读的汇编代码。逆向工程技术可以帮助我们分析和修改二进制文件的代码。 总之,《Linux二进制分析PDF》是一本系统介绍Linux二进制分析的书籍,通过阅读和学习这本书,我们可以了解Linux二进制文件的结构、特性和功能,以及进行二进制分析的常见工具和技术。这对于提高我们对Linux操作系统的理解和应用开发能力非常有帮助。 ### 回答3: "Linux二进制分析PDF" 是指一本关于Linux操作系统二进制分析的书籍或电子文档。 Linux二进制分析是指对Linux操作系统的二进制文件进行深入研究和分析的过程。这些二进制文件包括可执行文件、库文件、驱动程序和内核等。通过对这些文件逐个解析和分析,我们可以更好地理解它们的结构和功能,并且能够更好地进行调试、优化和开发工作。 "Linux二进制分析PDF" 这本书提供了关于如何进行Linux二进制分析的详细指导和实践经验。它可能包括以下方面的内容: 1. 二进制文件的格式:介绍二进制文件的基本结构和格式,如ELF(Executable and Linkable Format)等。讲解二进制文件的各个段(section)和节(segment),以及文件头(header)和节头(section header)等信息。 2. 动态链接与装载:详细解释Linux的动态链接和动态装载机制,如何解析和加载共享库,并将它们链接到可执行文件。 3. 符号表与调试信息:讲解二进制文件的符号表和调试信息,包括函数和变量的符号名、地址和类型等。以及如何利用这些信息进行调试和反汇编工作。 4. 反汇编和反编译:介绍如何将二进制文件转换成汇编代码,并进行反编译,还可以讲解一些常用的反汇编和反编译工具和技术。 5. 内核分析:讲解如何对Linux内核进行二进制分析和调试,包括内核模块、系统调用和驱动程序等。 通过学习和掌握这本书的内容,读者可以更深入地了解Linux系统的底层实现和机制,并且可以开展更高级、更复杂的开发和调试工作。当然,理解和运用这些知识需要具备一定的编程和计算机系统知识基础。希望这本"Linux二进制分析PDF"对想要深入学习Linux系统内部工作原理的读者有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值