驅(qū)動(dòng)開發(fā)中使用安全字符串函數(shù)
摘要: 大量的系統(tǒng)安全問(wèn)題是由于薄弱的緩沖處理以及由此產(chǎn)生的緩沖區(qū)溢出造成的,而薄弱的緩沖區(qū)處理常常與字符串操作相關(guān)。c/c++語(yǔ)言運(yùn)行庫(kù)提供的標(biāo)準(zhǔn)字符串操作函數(shù)(strcpy, strcat, sprintf等)不能阻止在超出字符串尾端的寫入。
基于Windows XP SP1以及隨后的操作系統(tǒng)的Windows DDK版本提供了安全字符串函數(shù)(safe string functions)。這類函數(shù)被設(shè)計(jì)的目的是用來(lái)取代相同功能的c/c++標(biāo)準(zhǔn)函數(shù)和其它微軟提供的庫(kù)函數(shù)。這類函數(shù)具有以下特征:
每個(gè)函數(shù)以目標(biāo)緩沖區(qū)所占的字節(jié)大小作為其一個(gè)輸入?yún)?shù),因此可以保證在寫入時(shí)不會(huì)超出緩沖區(qū)末端。
每個(gè)函數(shù)的輸出字符串均以NULL結(jié)尾(null-terminate),即使該函數(shù)可能會(huì)對(duì)正確的結(jié)果進(jìn)行截?cái)唷?
所有函數(shù)均有返回值,類型為NTSTATUS,只有返回STATUS_SUCCESS時(shí),操作結(jié)果才正確。
每個(gè)函數(shù)均有兩種類型的版本,按字節(jié)或者按字符數(shù)。例如,RtlStringCbCatW和RtlStringCchCatW。
閱讀全文
詳解IRP之?dāng)?shù)據(jù)傳輸?shù)臋C(jī)制
摘要: Windows 操作系統(tǒng)家族支持三種數(shù)據(jù)傳輸機(jī)制
閱讀全文