美文网首页
一步一步学pwn之Linux静态链接和目标文件

一步一步学pwn之Linux静态链接和目标文件

作者: yahoo0o0 | 来源:发表于2017-08-16 14:50 被阅读0次
    静态链接:
    

    一个程序进行编译成可执行文件的过程,可以分解为4个步骤,分别时预处理、编译、汇编和链接。

    编译过程

    而所谓的静态链接,便是在链接的过程之中处理库的时候,调用静态库将每个模块的源代码文件(如.c)经过编译器编译成的目标文件(如.o/.obj)和库一起链接最终形成可执行文件。

    静态链接对于计算机内存和磁盘空间浪费非常严重。

    目标文件:
    

    Linux下目前流行的可执行文件格式是ELF,静态和动态链接库的文件都按照可执行文件的格式存储,ELF文件主要包括四类:可重定位文件(Relocatable File)、可执行文件(Executable File)、共享目标文件(Shared Object File)、核心转储文件(Core Dump File)。在Linux下使用file命令来查看相对应的文件格式。

    下面我们对文件进行编译来进一步分析目标文件。

    $ gcc -c text.c
    

    编译之后我们可以得到一个.o的目标文件,我们可以用工具objdump来查看一下文件的结构和内容。

    $ objdump -h text.o
    

    我们可以看到除了基本的代码段之外,还包括以下几个段,具体各个段的功能可以自己去搜索一下。

    段的分布
    参考资料:《程序员的自我修养》
    

    相关文章

      网友评论

          本文标题:一步一步学pwn之Linux静态链接和目标文件

          本文链接:https://www.haomeiwen.com/subject/kmymrxtx.html