SFC Aracı ile Kontrol İşlemi
Windows işletim sistemi herhangi bir makineye kurulduktan sonra Windows Kaynak Koruması (Windows Resource Protection – WRP), işletim sistemi genelinde bir tarama yapar ve hassas sistem dosyalarının kopyalarını %SystemRoot% altında değişik lokasyonlara alır.
SFC.exe (System File Checker), Windows Kaynak Koruması tarafından korunan sistem dosyalarında herhangi bir hasar olup olmadığını kontrolünü yapar, ayrıca bu dosyalarda herhangi bir hasar olması durumunda ilgili dosyalardaki hasarlı dosyaları, daha önce doğru çalışan orijinallerinden aldığı kopya dosyalarla değiştirir.
SFC.exe’yi çalıştırabilmek için, cmd.exe Yönetici olarak açılmalı ve sfc.exe /scannow komutu girilmelidir. Bu komut bütün korumalı sistem dosyalarını tarar ve bütünlük kontrolü yapar. İlgili komuta ait ekran görüntüsü aşağıda verilmiştir.

Not: Bu işlem zaman alabilir.
SFC Aracının Parametreleri
SFC.exe ile verilecek komutlar şu şekildedir;
- /scannow -> Korumalı sistem dosyalarının bütünlük kontrolünü sağlar ve hasar görmüş dosyaları onarır.
- /verifyonly -> Bütünlük kontrolü yapar ama onarımı yapmaz.
- /scanfile -> Parametre olarak verilecek olan dosyaların bütünlük kontrollerini sağlar ve hasarlı olanları onarır
- /verifyfile -> Parametre olarak verilen dosyanın bütünlük kontrolünü yapar. (Onarım yapmaz)
Bunlar haricinde Windows işletim sistemi açılmıyorsa, veya donmuşsa, boot ekranında SFC.exe uygulamasını çalıştırıp bütünlük doğrulaması ve onarım yapılmak isteniyorsa;
- /offbootdir -> Boot esnasındaki onarım için boot dizinini belirtir.
- /offwindir -> Bot esnasındaki onarım için Windows dizinini belirtir.
Kritik Dosyanın Sahipliğin Yapılması
Bu ve sonraki adımda, kritik bir dosya üzerindeki izinleri değiştirildiğinde SFC uygulaması ile bu değişikliğin tespit edilmesi amaçlanmaktadır.
CMD aracının varsayılan olarak sahibi TrustedInstaller adlı kullanıcıdır. CMD aracının sahibini görmek için aşağıdaki adımlar gerçekleştirilir.
C:\Windows\System32 > cmd.exe > Properties > Security sekmesi > Permissions > Advanced > Owner sekmesi > Change owner to > Edit

Edit butonuna basıldığında aşağıdaki gibi sahiplik değiştirilebilir.

Bu işlemin kritik olduğuna dair bir uyarı mesajı ile karşılaşılacaktır.

Sahipliği Değiştirilen Kritik Dosyanın İzinlerinin Değiştirilmesi
Bu adımdan sonra CMD aracının erişim kontrol listelerinde aşağıdaki gibi değişiklik yapılır. Administrators grubuna tam yetki verilir. Bunun için aşağıdaki adımlar takip edilir:
C:\Windows\System32 > cmd.exe > Properties > Security sekmesi > Group or user names > Edit > Administrators grubu seçimi > Permissions = Full control

OK butonuna basıldığında kritik bir değişiklik yapıldığına dair bir uyarı gelecektir.

Yeni Bir CMD Aracının Oluşturulması
Yerel yönetici haklarına sahip olan oturum kullanıcısı, CMD aracını silerek aynı isimde başka bir araç oluşturabilir.
Bu amaçla öncelikle aynı dizinde (C:\Windows\System32) CMD aracının bir kopyası oluşturulur ve eski CMD aracı silinir.

Daha sonra “cmd” adında bir metin dosyası oluşturulur ve bu dosyanın uzantısı “exe” olarak değiştirilir. Not: Eğer uzantılar otomatik olarak gösterilmiyorsa klasör ve dosya görünüm seçeneklerinden bilinen uzantıların gizlenmemesi için aşağıdaki gibi ayar yapılır.
Herhangi bir klasör > Organize > Folder and search options > View > Hide extensions for known file types

Sonuçta eski CMD aracı yerine, aynı isime sahip olan exe uzantılı bir metin dosyası oluşturulur. İsim değiştirilmesi sırasında aşağıdaki gibi bir uyarı gelmektedir.

Bu uyarı kabul edildikten sonra dosya tipinin bir uygulamaya dönüştüğü gözlenmektedir.

CMD Aracının Bütünlüğünün Test Edilmesi
CMD aracının kopyası yönetici olarak başlatılır.

Komut satırından CMD aracı için bütünlük kontrolü gerçekleştirilmeye çalışıldığında aşağıdaki gibi bir hata mesajı elde edilir.

“C:\Windows\Logs\CBS\CBS.log” dosyasındaki hata mesajı şu şekildedir:

Mesaj içeriği aşağıdaki gibidir:
2013-04-23 12:50:22, Info CSI 0000000f [SR] Verifying 1 components
2013-04-23 12:50:22, Info CSI 00000010 [SR] Beginning Verify and Repair transaction
2013-04-23 12:50:22, Info CSI 00000011 Hashes for file member \??\C:\Windows\System32\cmd.exe do not match actual file [l:14{7}]”cmd.exe” :
Found: {l:32 b:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=} Expected: {l:32 b:hlHmY9Xv+5AiBGq0ZFKhAtHzH17bkKyH2NsCP+VLkvA=}
2013-04-23 12:50:22, Info CSI 00000012 [SR] Repairing corrupted file [ml:520{260},l:46{23}]”\??\C:\Windows\System32″\[l:14{7}]”cmd.exe” from store
2013-04-23 12:50:22, Info CSI 00000013 Repair results created:
POQ 1 starts:
0: Move File: Source = [l:192{96}]”\SystemRoot\WinSxS\Temp\PendingRenames\423806f90740ce010700000080052402._0000000000000000.cdf-ms”, Destination = [l:104{52}]”\SystemRoot\WinSxS\FileMaps\_0000000000000000.cdf-ms”
1: Move File: Source = [l:162{81}]”\SystemRoot\WinSxS\Temp\PendingRenames\423806f90740ce010800000080052402.$$.cdf-ms”, Destination = [l:74{37}]”\SystemRoot\WinSxS\FileMaps\$$.cdf-ms”
2: Move File: Source = [l:214{107}]”\SystemRoot\WinSxS\Temp\PendingRenames\c3bd0ff90740ce010900000080052402.$$_system32_21f9a9c4a2f8b514.cdf-ms”, Destination = [l:126{63}]”\SystemRoot\WinSxS\FileMaps\$$_system32_21f9a9c4a2f8b514.cdf-ms”
3: Hard Link File: Source = [l:236{118}]”\SystemRoot\WinSxS\amd64_microsoft-windows-commandprompt_31bf3856ad364e35_6.1.7600.16385_none_e701b864340d9016\cmd.exe”, Destination = [l:62{31}]”\??\C:\Windows\System32\cmd.exe”
POQ 1 ends.
2013-04-23 12:50:22, Info CSI 00000014 [SR] Verify complete