DLL(Dynamic Link Library)文件,即動態(tài)鏈接庫,也有人稱作應(yīng)用程序拓展。
Windows應(yīng)用程序中,實行了模塊化設(shè)計,也就是說并不是每個應(yīng)用程序都編寫完所有的功能代碼,而是在運行過程中調(diào)用相應(yīng)功能的DLL,不需運行的功能就不調(diào)用,所以大大加快了程序的加載速度和效率,其他應(yīng)用程序也可以調(diào)用相關(guān)的DLL,這樣也有利于促進(jìn)代碼重用以及內(nèi)存使用效率,減少了資源占用,而且程序更新時也只要更新相關(guān)的DLL就可以了。
要注意的是,有些病毒也會偽裝成DLL文件,并替換系統(tǒng)的DLL文件,需要我們防范。
DLL劫持原理
由于輸入表中只包含DLL名而沒有它的路徑名,因此加載程序必須在磁盤上搜索DLL文件。首先會嘗試從當(dāng)前程序所在的目錄加載DLL,如果沒找到,則在Windows系統(tǒng)目錄中查找,最后是在環(huán)境變量中列出的各個目錄下查找。利用這個特點,先偽造一個系統(tǒng)同名的DLL,提供同樣的輸出表,每個輸出函數(shù)轉(zhuǎn)向真正的系統(tǒng)DLL。程序調(diào)用系統(tǒng)DLL時會先調(diào)用當(dāng)前目錄下偽造的DLL,完成相關(guān)功能后,再跳到系統(tǒng)DLL同名函數(shù)里執(zhí)行。這個過程用個形象的詞來描述就是系統(tǒng)DLL被劫持(hijack)了。
偽造的dll制作好后,放到程序當(dāng)前目錄下,這樣當(dāng)原程序調(diào)用原函數(shù)時就調(diào)用了偽造的dll的同名函數(shù),進(jìn)入劫持DLL的代碼,處理完畢后,再調(diào)用原DLL此函數(shù)。
如何防止DLL劫持
DLL劫持利用系統(tǒng)未知DLL的搜索路徑方式,使得程序加載當(dāng)前目錄下的系統(tǒng)同名DLL。所以可以告訴系統(tǒng)DLL的位置,改變加載系統(tǒng)DLL的順序不是當(dāng)前目錄,而是直接到系統(tǒng)目錄下查找。
更多關(guān)于“網(wǎng)絡(luò)安全培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學(xué),課程大綱緊跟企業(yè)需求,更科學(xué)更嚴(yán)謹(jǐn),每年培養(yǎng)泛IT人才近2萬人。不論你是零基礎(chǔ)還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽。