動態連結器
外觀
動態連結器是作業系統的一部份,負責按照會當執行程序運行的時的需要裝入佮連結共享庫。裝入是指共享庫佇永久存儲上的內容複製去內存,連結是講添充跳轉表(jump table)佮重定位指針。
Windows 作業系統
類 Unix 作業系統
ld . so是 Unix 抑是類 Unix 系統頂懸的動態連結器,針對 ELF 文件格式
加載順序
做應用程式需要使用動態連結庫里的函數時,由 ld . so 負責加載。搜索動態連結庫的順序依此是
- 環境變量 LD \ _ AOUT \ _ LIBRARY \ _ PATH(dbg 版本)、 LD \ _ LIBRARY \ _ PATH(release 版本); 佇咧 Linux 中,LD \ _ PRELOAD 指定的 kha-tá-lok-guh 有上懸的優先權。
- 緩存文件 / etc / ld . so . cache。為著環境變量指定 kha-tá-lok-guh 的這二進位索引文件。更新緩存的命令是 ldconfig。
- 默認 kha-tá-lok-guh,先佇咧 / lib 去走揣,閣到 / usr / lib 去走揣。
安全性
駭客會當通過 GOT 覆寫,予具有特權的應用程式加載惡意動態連結庫,按呢對致使攻擊行為。所以乎,對於佮 setuid 抑是 setgid 相關的應用程式,動態連結器只有予人允准佇咧恬認 kha-tá-lok-guh 來揣合法的動態連結庫。