如何禁止Windows檔案保護(WFP)

來源:互聯網
上載者:User

如何禁止Windows檔案保護(WFP)。我們先來瞭解下WFP是如何工作的。相關的檔案是sfc_os.dll(2000下是sfc.dll,在xp下也有sfc.dll檔案,但都是調用sfc_os.dll的功能)和 Winlogon.exe 。

Winlogo進程通過調用sfc dll 匯出的函數進行檔案保護,後者通過FindFirstChangeNotification函數在使用者態監視要保護的目錄,然後通過WaitForSingleObject等待事件的發生。實際上如果你通過object viewer觀察這個進程,會找到每個保護目錄的控制代碼。這裡我用Process Explorer觀察得到:

EVENT  /BaseNamedObjects/WFP_IDLE_TRIGGER

File        D:/WINDOWS/system32/dllcache

File        D:/WINDOWS/system32

……

     

      那麼,我們是可以通過FindCloseChangeNotification或CloseHandle(兩個實際是相同的)來停止WFP監視系統目錄。

簡要步驟如下:

1.      在管理員身份下運行程式,提升自已進程的SeDebugPrivileges許可權

2.      找到winlogo進程的ID

3.      以PROCESS_DUP_HANDLE許可權開啟winlogo進程(後面要複製winlogo進程內的控制代碼)

4. 通過NtQuerySystemInformation函數,遍曆winlogo進程內所有開啟的控制代碼。
5.  通過NtQueryObject查詢控制代碼對象的名稱,如果名稱是我們需要停止保護的目錄,則用DuplicateHandle複製控制代碼到我們進程,

      帶DUPLICATE_CLOSE_SOURCE標誌,然後調用CloseHandle關閉該控制代碼。

詳細代碼參考:http://bbs.driverdevelop.com/htm_data/101/0705/101763.html

      Sfc_os.dll匯出的第5號函數(SetSfcFileException),也可用于禁止Windows檔案保護。通常,這個函數使得由參數指定的被保護檔案在60秒內可以修改替換,實際測試後,發現在xp下是沒有這個時間限制的。函數原型:

SetSfcFileException (DWORD param1, PWCHAR param2, DWORD param3);

param1: Always set to 0
param2: The full path of the file to modify later
param3: Always set to –1

代碼示範:

typedef DWORD(__stdcall *CPP) (DWORD param1, PWCHAR param2, DWORD param3);

void Disable_WFP()

{
HINSTANCE hmod=LoadLibrary("sfc_os.dll");
CPP SetSfcFileException;

// the function is stored at the fifth ordinal in sfc_os.dll
SetSfcFileException= (CPP)GetProcAddress(hmod,(LPCSTR)5);

SetSfcFileException(0, L"c://windows//system32//calc.exe",-1);

//Now we can modify the system file in a complete stealth.

}

 

--------------------------------

上面的方法,重啟之後將會失效

 Cryptographic Services

引用:

提供三種管理服務: 編錄資料庫服務,它確定 Windows
檔案的簽名;受保護的根服務,它從此電腦添加和刪除受信根授權的認證;和密鑰(Key)服務,它協助註冊此電腦擷取認證。如果此服務被終止,
這些管理服務將無法正常運行。如果此服務被禁用,任何依賴它的服務將無法啟動。

 

在大家的反覆測試下 發現 CS服務以及WFP的幾個特性 CS服務在第一次關閉以後 會自動啟用
(往後 重複啟動 停止 CS都不會自動啟用了)
so 我想這就是 envymask為什麼測試會彈出框的原因
有兩個解決的辦法:
1.利用luoluo提出的替換服務 把 cs服務用其他服務替換 那麼即使cs再次啟動 也不能啟檢查作用
2.修改註冊表 HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Hardware Profiles/0001/System/CurrentControlSet/Enum/ROOT/LEGACY_CRYPTSVC/0000

0值 為啟用
1值 為禁用

為了徹底幹掉cs服務 我們設值為1
wfp的特性 僅在系統檔案被刪除 或者 替換的時候 調用cs服務對其進行檢測
而當我們結束cs服務 刪除 或者 替換系統檔案以後 再次啟動cs服務 wfp不會對系統檔案是否改動
做檢測 所以wfp的監控 是動態

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.