GitHub - graphitemaster/detour:通过 Linux 动态链接器的迂回之路

主要观点: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 的可执行文件、避免依赖地狱、实验新运行时等。
阅读 26
0 条评论