Home 书籍整理
Post
Cancel

书籍整理

程序员的自我修养—链接、装载与库

——- 2022-12-02 ——–

读书笔记.drawio

应该是看了4天

更像是GNU工具书,正如其副标题,事无巨细的介绍了程序链接、装载和运行库的方方面面,介绍的非常透彻。

内容包含:

  • ELF结构(尤其是与链接相关的,符号表、重定位表等)
  • 静态链接(怎么做的重定位与符号解析,GOT表,解决符号冲突)
  • 装载的过程(VMA,页表映射,缺页中断)
  • 由装载引出动态链接的概念(为什么要动态链接,地址无关代码,lazy binding,PLT,动态链接器的实现)
  • Linux共享库的介绍(版本号,怎么组织的,LD_LIBRARY_PATH,LD_PRELOAD, gcc命令中的-Wl啥的作用,-lXXX相当于链接libXXXX.so.x.x.x)
  • 运行库(简单介绍了_start -> _libc_start_main -> init -> main的过程)
  • 介绍了如何自己实现一个运行库

如果对上述内容有不清楚的地方,或者甚至不知道我在说什么,那么这本书就可以很好的解答你的疑惑。相信我,虽然这本书是09年,但是比现在网上能搜到的绝大多数博客写的都要好。CSAPP还没看,内容应该有很大一部分的重叠,但是这本书讲的更娓娓道来。

读完此书,有一个很明显的效果就是readelf和objdump这两个工具,命令行选项了解的非常透彻了

  • 这个选项是干嘛的
  • 为什么需要这个选项
  • 这个选项在链接和装载的过程中起到了什么作用
  • 显示的内容是什么意思
  • 每个字段的具体含义
  • 和其他选项有什么关联

UNIX环境高级编程

—– 2023.1.5 ——-

大致翻了一遍,目前没有写这方面代码的需求,此书要配合着代码食用才能入味。

书如其名,写的就是UNIX环境下的编程方法。所以讲的就是UNIX环境下,POSIX.1标准下的各个标准库、系统调用的使用方法。

本质上是一个手册类书籍,更加详细的man手册。详细介绍了各个API的signature,参数的含义,在UNIX环境中的背景(为什么会存在该API,与UNIX的什么设计有关)

This post is licensed under CC BY 4.0 by the author.

pwn学习资料汇总

-