Driver Verifier aracı, Windows 2000'den bu yana her Windows sürümüne dahil edilen ve sistem bozulmasına, arızalara veya diğer öngörülemeyen davranışlara neden olan birçok sürücü sorununu tespit etmek ve gidermek için kullanılan bir araçtır. Bu konuda, sistemdeki bir sürücüyü tespit etmek ve sorunlarını gidermek için Sürücü Doğrulayıcı'nın nasıl kullanılacağını anlatmaya çalışacağım.

Başlamadan önce; Verifier kullanımı öncesi sistem yedeği almanız, Geri yükleme noktası oluşturmanız elzem bir konudur. Zira konunun ilerisinde kısa olarak değindiğim boot sırasında sürekli mavi ekran stuck durumu yaşamanız düşük de olsa olasıdır. Bunun sonucunda sistemin düşeceği "Başlangıç Onarım" ekranından sistem yedeğiniz ile kurtulabilirsiniz.

Verifier aracını nasıl çalıştırabilirim?

Aracı Windows üzerinden çalıştırmak için 3 farklı alternatif yol bulunuyor:
  1. Çalıştır menüsü üzerinden (Win+R) > Verifier.exe/search seçeneği ile.
  2. Windows arama butonu üzerinden > Verifier.exe+sağ tık yönetici çalıştır seçeneği ile.
  3. Geliştirilmiş Komut Sistemi üzerinden (CMD) > Verifier.exe +Enter seçeneği ile.
Verifier aracının ayarları nasıl olmalıdır?

Aracı çalıştırdıktan sonra karşınıza gelen ekrandan "Create custom settings (for code developers)" adlı seçeneği seçin. Bu, sürücüleri doğrulamak için önerilen testleri seçmemize olanak sağlayacak.

Ekran görüntüsü 2024-06-30 002413.webp


Windows 11 için, aşağıdaki seçenekleri aktifleştirmeniz gerekiyor. 2 seçeneğin üstünü çizdim (Daha sonra değineceğim.)
  • Special Pool
  • Force IRQL Checking
  • Pool Tracking
  • Deadlock Detection
  • Security Checks (Windows 7 ve sonrası için geçerlidir)
  • Miscellaneous Checks
  • DDI Compliance Checking (Windows 8 ve sonrası için geçerlidir)
  • DDI Compliance Checking (Additional) (Windows 8 ve sonrası için geçerlidir)
Aşağıdaki ayarların Windows 11'de kullanımdan kaldırıldığını ve etkinleştirilmemesi gerektiğini unutmayın:
  • Power Framework Delay Fuzzing (Windows 10 ve altı için geçerlidir.)
  • Kernel Synchronisation Delay Fuzzing

Ekran görüntüsü 2024-06-30 012929.webp


Ayarları yaptıktan sonra, artık doğrulamak istediğiniz sürücüleri seçmeye hazır hale geleceksiniz. Bunu yapmak için, lütfen "Select driver names from a list" başlıklı seçeneği seçin ve ardından tüm sürücüleri Provider sütununa göre sıralayın.

Ekran görüntüsü 2024-06-30 004938.webp


"Microsoft" veya "<unknwon>" başlığı altında Provider'a sahip olmayan tüm kutucukları işaretleyin.

Ekran görüntüsü 2024-06-30 005037.webp


Microsoft sürücülerini etkinleştirmek için özel sebeplerinizin olması lazım, aksi takdirde bunu normal yollarla da denesiniz pek bir işe yaramayacaktır. İlgili makale > S!

The problem is that Verifier is validating calls into the operating system. For the above drivers, your driver isn’t calling into the operating system, at least not most of the time. The library is. For example, if you’re KMDF driver calls WdfDeviceCreate, it’s the Framework that calls ExAllocatePool to allocate your WDFDEVICE and your Device Context. The buffers allocated in this case won’t be subject to validation by Driver Verifier unless you have explicitly enabled Driver Verifier for the Framework. If you only enable Driver Verifier for your driver, the only pool validation that you get will be for calls that your driver makes directly to ExAllocatePool

ap_fig1.webp

Ayrıca, dump_ veya hiber_ ön ekli sürücülerin de doğrulamasını etkinleştirmemenizi tavsiye ederim çünkü bu sürücüler makalede belirtildiği gibi .dmp ve .hiberfil.sys dosyalarını oluşturmayı yönetmekten sorumludurlar > <unknown>

İstediğiniz sürücüleri seçtikten sonra Finish/Son'u seçin ve ardından Verifier'i başlatmak için bilgisayarı yeniden başlatın.

Verifier aracını nasıl kapatabilirim?

Windows'u normal bir şekilde başlatabiliyorsanız Geliştirilmiş Komut Sistemini açın ve ardından aşağıdaki komutu girin:

verifier /reset

Değişikliklerin etkili olması için bilgisayarı yeniden başlatmanız gerekecektir.

Verifier sonrası sürekli olarak sistemin boot işlemi sırasında çökmesi gibi durumlarla da karşılaşabilirsiniz. Bunun nedeni genellikle herhangi bir boot sürücüsünün kendisine karşı çalıştırılan Verifier testlerinden 1 tanesi veya daha fazlasında başarısız olmasıdır. Bu nadir bir durumdur ve bunu yaşamanız çok nadir bir olaydır. Böyle bir durumda kalırsanız Verifier'i Outside Windows üzerinden disable etmeniz gerekecektir.

Verifier aracının mevcut durumunu nasıl kontrol edebilirim?

Verifier'in çalışıp çalışmadığını kontrol etmek için Geliştirilmiş Komut Sistemini açın ve ardından aşağıdaki komutu girin:

verifier /query

Verifier başarıyla başlatıldıysa hangi seçeneklerin etkinleştirildiğini gösteren ayarlar listesini görmeniz de gerekiyor. Aksi takdirde şu anda hiçbir sürücünün doğrulanmadığını belirten bir mesaj alabilirsiniz. Öte yandan, hangi ayarların seçildiğini görmek istiyorsanız aşağıdaki komutu kullanın:

verifier /querysettings



Daha önceden değineceğim dediğim 2 seçenek hakkında;

İlk olarak "Randomised Low Resources Simulation" seçeneğinin üstünü çizme sebebim kendisinin çok fazla False - Positive sonuçlara neden olmasıdır ve buna ek olarak çoğu zaman hiç de gerekli olmamasıdır.

Driver Verifier fails random instances of the driver's memory allocations, as might occur if the driver was running on a computer with insufficient memory. This tests the driver's ability to respond properly to low memory and other low-resource conditions.
- Low Resources Simulation - Windows drivers

F/P sonuçlara neden olduğu ve sistemi genel olarak tepkisiz hale getirebileceği ihtimali de olduğundan "Randomised Low Resources Simulation "seçeneğini etkinleştirmenize hiç gerek yok. Yani extra olarak çok çok özel bir sürücüyü test etmediğiniz sürece Microsoft tarafından bile önerilmiyor.

Caution This option is not intended for use when you are verifying all (or a large collection of) drivers on a computer. This option should be used only when you are doing targeted testing of individual drivers or their attached filter drivers. Using this option on a large number of drivers at the same time could cause unpredictable results, and could force crashes in components unrelated to the driver(s) you are testing.
- Systematic Low Resources Simulation - Windows drivers

Bir diğeri olarak "I/O Verification" seçeneğinin üstünü çizme sebebim çökmeleri giderirken genellikle karşılaşmadığımız belirli bir dizi hatayı test etmek için tasarlanmış olmasından dolayı. Daha da önemlisi, bu seçenekten en yüksek seviyede verim almak için tek seferde yalnızca bir sürücüde etkinleştirilmesi gerekiyor.

When Level 1 I/O Verification is enabled, all IRPs obtained through IoAllocateIrp are allocated from a special pool and their use is tracked.

[...]

Because the special IRP pool is of limited size, I/O Verification is most effective when it is only used on one driver at a time.
- I/O Verification - Windows drivers

Bununla beraber diğer 2 seçenek de "I/O Verification" seçeneğinin etkinleştirilmesine bağlıdır. IRP Logging(') yalnızca 0x44 Bug Check'ler için yararlı olan ek bir günlük oluşturur. Bunların yanında da 3.bir seçenek olan "Force Pending I/O Requests" seçeneği, test ettiğiniz sürücüyle ilişkili kaynak koduna sahip değilseniz etkinleştirilmemesi gereken diğer/başka bir seçenektir.

Caution Do not use this option on a driver unless you have detailed knowledge of the operation of the driver and have verified that the driver is designed to handle STATUS_PENDING return values from all of its calls to IoCallDriver. Running this option on a driver that is not designed to handle STATUS_PENDING from all calls can result in crashes, memory corruptions, and unusual system behavior that can be difficult to debug or correct.
- Force Pending I/O Requests - Windows drivers


Verifier'e ait Hata Kontrolleri: