ld.so

ld.so是Unix或類Unix系統上的動態連結器。

基本介紹

  • 中文名:ld.so
  • 分類:計算機科學
常見變體,載入順序,安全性,動態程式庫,

常見變體

ld.so常見的有兩個變體:
  • ld.so針對a.out格式的二進制執行檔
  • ld-linux.so針對ELF格式的二進制執行檔

載入順序

當應用程式需要使用動態程式庫里的函式時,由ld.so負責載入。搜尋動態程式庫的順序依此是
  • 環境變數LD_AOUT_LIBRARY_PATH(a.out格式)、LD_LIBRARY_PATH(ELF格式);在Linux中,LD_PRELOAD指定的目錄具有最高優先權。
  • 快取檔案/etc/ld.so.cache。此為上述環境變數指定目錄的二進制索引檔案。更新快取的命令是ldconfig。
  • 默認目錄,先在/lib中尋找,再到/usr/lib中尋找

安全性

駭客可以通過修改上述環境變數,讓具有特權的應用程式載入惡意動態程式庫,從而導致攻擊行為。所以,對於setuid/setgid應用程式,動態連結器只在默認目錄中尋找已被setgid的動態程式庫

動態程式庫

動態程式庫是微軟公司在微軟視窗作業系統中實現共享函式館概念的一種實現方式。這些庫函式的擴展名是.DLL、.OCX(包含ActiveX控制的庫)或者.DRV(舊式的系統驅動程式)。
所謂動態連結,就是把一些經常會共用的代碼(靜態連結的OBJ程式庫)製作成DLL檔,當執行檔調用到DLL檔內的函式時,Windows作業系統才會把DLL檔載入存儲器內,DLL檔本身的結構就是可執行檔,當程式有需求時函式才進行連結。透過動態連結方式,存儲器浪費的情形將可大幅降低。靜態程式庫則是直接連結到執行檔。
DLL的檔案格式與視窗EXE檔案一樣——也就是說,等同於32位視窗的可移植執行檔案(PE)和16位視窗的New Executable(NE)。作為EXE格式,DLL可以包括原始碼、數據和資源的多種組合。
在更廣泛的意義上說,任何同樣檔案格式的電腦檔案都可以稱作資源DLL。這樣的DLL的例子有擴展名為ICL的圖示庫、擴展名為FON和FOT的字型檔。

相關詞條

熱門詞條

聯絡我們