DOS 時代程序代碼獨立,常用代碼打包成「庫」(Library),編譯時靜態鏈接。Windows 引入 **動態鏈接庫 (DLL, Dynamic Link Library)**:系統提供數千 API,程序運行時動態加載 DLL,極大簡化開發。
本質:DLL 也是可執行文件,但**不能獨立運行**,需宿主進程調用其入口函數 (DllMain) 激活。
將實現木馬功能的代碼編譯為 DLL,導出相關 API。表面看是普通 DLL,實攜帶完整木馬功能。
為何不直接寫 EXE? 為了**隱藏**:DLL 運行時掛在調用者進程中,**不產生獨立進程**,較傳統 EXE 木馬難被發現。
Windows 進程擁有私有內存空間,理論隔離。但可通過**動態嵌入**技術進入並操作他進程內存。主流實現:
CreateRemoteThread 將 DLL 掛載到正常系統進程 (如 svchost.exe、explorer.exe)。DLL 不能自啟,**必須有一個 EXE (Loader) 使用動態嵌入技術讓 DLL 搭上正常進程的車,調用 DllMain 激活木馬,隨後 Loader 退出**。
成熟 DLL 木馬會保護 Loader 不被輕易銷毀。
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs。系統加載 user32.dll 時自動加載指定 DLL,執行 DllMain 啟動木馬。ServiceMain,掛載於 svchost.exe。隱蔽性極高,Loader 有保障,較少見。難度大於普通病毒/木馬。建議:
DLL 木馬利用 Windows 核心機制 (動態鏈接、進程注入) 實現極致隱蔽。理解 Loader 角色、注入技術、啟動路徑,是防禦關鍵。對抗無絕對,唯有分層防護、持續更新、安全習慣,方能將風險降至最低。