主要观点:Detour 是一个微小的静态库,能让静态链接的可执行文件在运行时访问动态链接,无需依赖 glibc 或 musl。
关键信息:
- Detour 是一个最小的引导层,可让应用访问系统动态链接器
ld-linux.so
,无需 libc。 - 完全静态链接有弊端,如丢失依赖动态链接的系统组件,而 Detour 可解决此问题。
- Detour 通过伪装成操作系统,利用系统动态链接机制,在不直接依赖的情况下获取动态链接器的功能。
- 包含一个用 Detour 实现的 SDL2 和 OpenGL 渲染闪烁彩色窗口的演示,是完全独立的静态可执行文件,运行时动态加载所需库。
重要细节: - Detour 目前仅适用于 x86_64 Linux,其他架构需编写系统调用等的汇编代码。
- 辅助 ELF 存根极小,约 35 行 C 代码,动态链接并明确固定调用的符号到早期 glibc 版本。
- 当以独立方式使用 Detour 时,ELF 入口点必须是
detour_start
。 - 使用 Detour 可创建无 libc 的可执行文件、避免依赖地狱、实验新运行时等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。