前言

    笔者 2007 年开始系统地学习 Shell 编程,并在写了序列文章。

    在编写《Shell 编程范例》文章的一章时,为了全面了解进程的来龙去脉,对程序开发过程的细节、ELF 格式的分析、进程的内存映像等进行了全面地梳理,后来搞得“雪球越滚越大”,甚至脱离了 Shell 编程关注的内容。所以想了个小办法,“大事化小,小事化了”,把涉及到的内容进行了分解,进而演化成另外一个完整的序列。

    2008 年 3 月 1 日,当初步完成整个序列时,做了如下的小结:

    目前整个序列大部分都已经以 Blog 的形式写完,大体结构目下:

      • 第一部分:《预处理和编译》(更新时间:2008-2-22)
      • 第二部分:《汇编和链接》(更新时间:2008-2-22)
      • 进程加载过程:程序在内存里是个什么样子?
      • 第一部分(讨论“缓冲区溢出和注入”问题)(更新时间:2008-2-13)
      • 第二部分(讨论进程的内存分布情况)(更新时间:2008-6-1)
      • 动态链接过程:函数 puts/printf 的地址在哪里?
      • 更新时间:2008-2-26
    • 《打造史上最小可执行ELF文件》
      • ELF 详解:从”减肥”的角度一层一层剖开 ELF 文件,最终获得一个可打印 Hello World 的 45 字节 ELF 可执行文件
      • 更新时间:2008-2-23
      • 程序开发过后:内存溢出了吗?有缓冲区溢出?代码覆盖率如何测试呢?怎么调试汇编代码?有哪些代码优化技巧和方法呢?
      • 更新时间:2008-2-29

    打算重新规划、增补整个序列,并以开源项目的方式持续维护,并通过 泰晓科技|TinyLab.org 平台接受读者的反馈,直到正式发行出版。

    自由书籍将会维护在 的项目仓库中。项目相关信息如下:

    • 代码仓库:

    欢迎大家指出本书初稿中的不足,甚至参与到相关章节的写作、校订和完善中来。

    如果有时间和兴趣,欢迎参与。可以通过 泰晓科技 联系我们,或者直接关注微博并私信我们。