Kami menangani kesalahan boot karena tanda tangan digital yang hilang dari driver di sistem x64

Dalam artikel ini saya akan mencoba menjelaskan metode untuk mendiagnosis masalah dengan file driver yang tidak ditandatangani dalam versi x64 bit sistem Windows, karena itu komputer berhenti memuat dan crash ke BSOD saat memuat. Tetapi sistem masih dapat dimuat dengan menonaktifkan verifikasi tanda tangan digital saat boot (F8 -> Nonaktifkan Supir Tanda tangan Penegakan) Sebagai contoh, dalam artikel ini saya akan bekerja dengan Windows Server 2008 R2 (yang saya ingat, hanya bisa dalam edisi 64-bit), tetapi teknik ini cocok untuk Windows 7 x64 dan Vista x64.

Jika kita kembali ke latar belakang masalah, kita ingat bahwa Microsoft memutuskan bahwa dalam sistem 64-bit, dimulai dengan Windows Vista, Windows memuat driver dalam mode kernel hanya jika driver ditandatangani secara digital. Jika driver tidak memiliki tanda tangan digital, maka kesalahan kritis terjadi ketika sistem melakukan boot (tergantung pada jenis driver yang memuatnya diblokir) dan layar BSOD muncul. Kesalahan spesifik dan kodenya tergantung pada driver tertentu, yang diblokir selama proses boot. Beberapa kesalahan langsung pada layar BSOD dapat mengindikasikan file driver yang tidak ditandai.

Dalam kasus saya, setelah memperbarui driver pada server Windows 2008 r2 selama boot normal mesin, layar biru kematian muncul dengan teks:

STOP: c000021a (Kesalahan Sistem fatal)

Proses sesi awal atau proses sistem dihentikan secara tak terduga dengan status 0x00000000 (0xc000428 0x00100448). Sistem telah dimatikan

Mari kita coba mencari tahu kesalahan macam apa ini, driver mana yang menyebabkannya, dan mari kita tentukan perangkat spesifik oleh driver tersebut.

Untuk memecahkan kode kesalahan, kita perlu parameter kedua (disorot dalam huruf tebal) - 0xc000428.

Ubah kode kesalahan hex menjadi bentuk yang lebih mudah dibaca. Untuk melakukan ini, Anda dapat menggunakan utilitas bawaan di Windows SLUI.Exe atau cocok dengan kode kesalahan dalam file ntstatus.h, yang dapat ditemukan di Windows SDK. Kami akan menggunakan metode pertama, yang akan kami jalankan di baris perintah:

slui.exe 0x2a 0xC0000428

Seperti yang dapat Anda lihat di tangkapan layar, kami yakin bahwa BSOD disebabkan oleh ketidakmampuan untuk memverifikasi tanda tangan digital pengemudi (“Windows tidak bisa verifikasi digital tanda tangan untuk ini file”)

Kami me-reboot komputer kami dan saat boot tekan tombol F8. Di menu Opsi Boot Tingkat Lanjut, nonaktifkan verifikasi tanda tangan digital dengan memilihNonaktifkan Supir Tanda tangan Penegakan .

Jika dalam mode ini server melakukan boot, kami yakin bahwa beberapa modul atau driver yang tidak ditandatangani tidak memungkinkan sistem untuk boot secara normal.

Langkah selanjutnya adalah mengidentifikasi modul masalah atau file driver. Buka log peristiwa konsol (Peraga Peristiwa) dan buka Log Aplikasi dan Layanan -> Microsoft -> Windows -> CodeIntegrity -> Operasional.

Catatan: jika, ketika mengakses log di cabang ini, kesalahan "akses ditolak ”, buat di disk c: direktori dengan menyediakan grup Semua orang memiliki akses penuh. Kemudian ubah jalur file ETL ke direktori baru, dan matikan log on dan on lagi.

Dalam kasus saya, ada acara EventID 3001 di log dengan teks "Integritas Kode menentukan modul kernel yang tidak ditandatangani \ Device \ HarddiskVolume1 \ Windows \ System32 \ win32k.sys dimasukkan ke dalam sistem. Periksa dengan penerbit untuk melihat apakah versi modul kernel yang ditandatangani tersedia". Jadi kami menemukan driver masalah!

Driver ini dapat berupa driver Microsoft asli atau driver pihak ketiga. Pastikan driver ini tidak benar-benar memiliki tanda tangan digital. Untuk melakukan ini, kita memerlukan utilitas dari Sysinternals bernama SIGCHECK.EXE (Anda dapat mengambilnya di sini http: //teknik.microsoft.com /id-kami /sysinternals /bb897441).

Verifikasi keberadaan tanda tangan digital dilakukan oleh perintah:

c: \ TOOLS> sigcheck.exe -i c: \ Windows \ System32 \ win32k.sys

Jika tidak ada tanda tangan, maka Tidak Ditandatangani akan ditunjukkan di bidang Terverifikasi (jika tidak, Ditandatangani sesuai itu).

Kami memiliki dua opsi untuk menyelesaikan masalah ketidakmungkinan boot sistem normal dengan driver yang tidak ditandatangani:

  1. Temukan versi driver yang ditandatangani
  2. Menolak untuk menggunakan driver ini (dan perangkat)
  3. menonaktifkan verifikasi tanda tangan digital driver di Windows

Opsi ketiga mungkin tidak berfungsi karena satu dan lain alasan. Dalam dua kasus pertama, kita perlu menentukan perangkat spesifik yang dimiliki oleh file driver .sys yang diberikan..

Bagaimana cara menentukan perangkat, hanya mengetahui nama file sys? Saya menggunakan metodologi berikut (mari kita perlu mengidentifikasi perangkat yang drivernya bernama HpCISSs2.sys):

1) Buka editor registri dan cari cabang HKEY_LOAL_MACHINE \ SYSTEM \ ControlSet001 mencari kunci dengan nilai HpCISSs2.sys

2) Dalam kasus saya, ditemukan di cabang HKEY_LOAL_MACHINE \ SYSTEM \ ControlSet001 \ services \ HpCISSs2

3) Kami memperluas cabang bersarang dengan nama ENUM, kami tertarik pada nilai kunci  0, dalam kasus saya ini adalah PCI \ VEN_103C& DEV_3230& SUBSYS_3235103C & REV_01 \ 4 & 3b416f2c & 0 & 0018

4) Kami menentukan bahwa produsen perangkat memiliki ID 103C, dan kode perangkat adalah 3230

5) Lebih lanjut di situs mengindikasikan dalam bidang Pencarian Vendor dan Pencarian Perangkat kode yang kami temukan.

6) Kami mendapatkan bahwa perangkat yang kami cari adalah pengontrol hard drive HP Smart Array P400.

Kami hanya perlu menemukan versi driver baru di situs web produsen peralatan (hati-hati mencari versi OS driver yang Anda butuhkan cocok) dan memperbarui driver di komputer.