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