热门问题
时间线
聊天
视角
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