2

我熟悉一般程序内存布局(即:文本段、数据段、堆、堆栈等),并试图找到类似于此处描述和图表的内容:

http://www.tenouk.com/Bufferoverflowc/Bufferoverflow1c.html

但是,我试图找出三个不同的案例,每个案例都涉及使用外部库:

  1. 构建时外部库的静态链接(即:libtest.aldflags
  2. 在构建时动态链接外部库(即:libtest.soldflags
  3. 在运行时动态链接外部库(即:libtest.so 不在ldflags,但库是通过dlopen()/dlsym()调用加载的)

更熟悉这个的人可以向我解释内存布局吗?我对 case(2)(3).

谢谢你。

4

1 回答 1

1

我发现 Solaris 链接器指南(位于http://docs.oracle.com/cd/E26502_01/html/E26507/index.html)写得非常好,在解释一个极其复杂的实用程序方面非常有用。

图表方面,您可能会在http://docs.oracle.com/cd/E26502_01/html/E26507/chapter6-93046.html#scrolltochttp://docs.oracle.com/cd/E26502_01/html找到那些/E26507/chapter6-34713.html#scrolltoc会有所帮助。

于 2014-02-12T03:18:22.813 回答