{
LARGE_INTEGER liTime;
PSPY_PROTOCOL psp = &gpDeviceContext->SpyProtocol;
KeQuerySystemTime (&liTime);
SpyHookWait ();
if (SpyWriteFilter (psp, psc->pshe->pbFormat,
psc->adParameters,
psc->dParameters))
{
SpyWriteNumber (psp, 0,(psp->sh.dCalls)); // <#>:
SpyWriteChar (psp, 0, ":");
// =
SpyWriteFormat (psp, psc->pshe->pbFormat, //
psc->adParameters); // ()
SpyWriteLarge (psp, 0, &liTime); // ,
SpyWriteChar (psp, 0, ",");
SpyWriteNumber (psp, 0, (DWord) psc->hThread); // ,
SpyWriteChar (psp, 0, ",");
SpyWriteNumber (psp, 0, psp->sh.dHandles); //
SpyWriteChar (psp, 0, "n");
}
SpyHookRelease ();
return;
}
列表 5-7. 主要的 Hook 協(xié)議函數(shù) SpyHookProtocol()
如果你比較一下 列表 5-7 給出的 SpyHookProtocol() 函數(shù)的主要部分和 示列 5-2 給出的協(xié)議項的一般格式,將很容易找出那個語句生成了協(xié)議項中的哪一個域( fIEld ) 。這樣一來一切就很清楚了為什么 列表 5-6 中的協(xié)議字符串沒有說明整個數(shù)據(jù)項 --- 有些獨立于功能的數(shù)據(jù)將由 SpyHookProtocol() 添加,而這將不需要格式字符串的幫助 。SpyHookProtocl() 的核心調(diào)用是 SpyWriteFormat() ,該函數(shù)生成 =
請注意,這些代碼稍微有些危險 。這些代碼編寫與 1997 年是針對 Windows NT 4.0 的 。在移植到 Windows 2000 之后,當 hook 工作一段較長時間后會偶爾引發(fā)藍屏 。更糟糕的是,有些特殊的操作將立即引發(fā)藍屏,例如,在 My Favoriter 文本編輯器的 FileOpen 對話框中打開我的電腦時 。在分析過多過 crash dump 后,我發(fā)現(xiàn)是由于將 NULL 指針傳遞給了某些函數(shù)從而導致了系統(tǒng)崩潰 。一但 Spy 設備試圖使用這些指針中的某個來記錄該指針引用的數(shù)據(jù)時,系統(tǒng)就會崩潰 。典型的就是,指向 IO_STATUS_BLOCK 結(jié)構(gòu)的指針,在 UNICODE_STRING 和 OBJECT_ATTRIBUTES 結(jié)構(gòu)中存在無效的字符串指針 。我還發(fā)現(xiàn)某些有 Buffer 成員的 UNICODE_STRING 結(jié)構(gòu)沒有結(jié)束符 。因此,我再次強調(diào)你不應該假定所有的 UNICODE_STRING 結(jié)構(gòu)都以結(jié)束 。在不能確定時,請使用 Length 成員,它總能正確地告訴你在 Buffer 中存放的有效的字節(jié)數(shù) 。
【3 《Undocumented Windows 2000 Secrets》翻譯 --- 第五章】為了修正這一問題,我為所有使用客戶指針的日志函數(shù)增加了指針有效性檢查 。在結(jié)束時,我使用第四章討論過的 SpyMemoryTestAddress() 函數(shù)來檢驗一個線性地址指針是否指向一個有效的頁表項( PTE ) 。更詳細的信息請參考 列表 4-22 和 列表 4-24。另一種可能的替代方案是使用結(jié)構(gòu)化異常( __try/__except ) 。
推薦閱讀
- 為Windows請個“系統(tǒng)醫(yī)生”
- Windows 2000桌面也美麗
- 荒野行動送快遞是什么梗
- windows 2000是怎樣引導的
- 三倍工資的節(jié)日有哪些
- Windows2000下用戶模式的內(nèi)存掃描
- 3 《Undocumented Windows 2000 Secrets》翻譯 --- 第三章
- 暗戀橘生淮南是在哪拍的
- 9 《Undocumented Windows 2000 Secrets》翻譯 --- 第四章
- 奶酪陷阱大結(jié)局是什么
