热门问题
时间线
聊天
视角
DLL注入
来自维基百科,自由的百科全书
Remove ads
DLL注入(英語:DLL injection)是一種涉及電腦資訊安全的特殊編程技術,它可以強行使一個處理程序載入某個動態連結媒體櫃以在其私有位址空間內執行指定程式碼(往往是惡意程式碼)。[1]DLL注入的常見手段是用外部DLL媒體櫃覆蓋一個程式原先的DLL媒體櫃,目的是實現該程式的作者未預期的結果。[2][3]比如,注入的程式碼可以掛鉤(Hook)系統訊息或系統呼叫[4][5],以達到讀取密碼框的內容等危險目的,而一般編程手段無法達成這些目的。[6]
能將任意程式碼注入任意處理程序的程式被稱為DLL注入器(DLL injector)。
實現方式
- 在類Unix作業系統上,基於ld.so(在BSD上)和ld-linux.so(在Linux上)的動態連結器,可以通過在LD_PRELOAD環境變數中指定媒體櫃的路徑名,將任意媒體櫃連結到新處理程序中,該變數可以全域設定或單獨為某個處理程序設定。[8]
例如,在Linux系統上,這條命令會在啟動時將檔案"test.so"中的共享媒體櫃連結到命令"prog"中:
LD_PRELOAD="./test.so" prog
這樣的媒體櫃可以像其他共享對象一樣建立。在GCC中,這涉及到使用-fpic或-fPIC選項編譯包含要連結的新全域變數的原始檔[9],並使用-shared選項進行連結。[10]該媒體櫃可以像其他媒體櫃一樣訪問程式中聲明的外部符號。
參考資料
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads