星巡研究院

渗透视角下的C语言

### 15.1.1 干什么 `dlfcn.h`(dynamic loading function,动态加载函数接口)声明运行期按需加载共享对象、按符号名解析地址、卸载与取错四类接口。它在进程运行中把一个共享库映射进当前地址空间,再按名字取得函数或变量地址。 它的职责边界是这样的。`dlopen`/`dlsym`/`dlclose`/`dlerror` 均为 glibc 库函数,无独立系统调用,内部由动态链接器完成。进程启动期的依赖加载由 `ld-linux` 在程序入口前完成,不在本库范围。本程序只加载系统本地自带共享库,不加载任何来源不明的外部 `.so` 路径。 ### 15.1.2 谁在调 * 插件化程序在运行期按配置 `dlopen` 功能模块,`dlsym` 取模块入口函数地址后回调。 * 语言运行时的扩展加载走等价机制:JVM ClassLoader、PHP 扩展加载器在 Linux 原生侧落到 dlfcn 接口。 * 测试框架与动态代理工具按符号名回调已加载模块中的函数。 * 动态链接器自身实现 `dlopen` 的查找、映射与重定位逻辑。 ###
这是进阶内容

升级理论包获取本册全部章节,从机器本质系统入门