Memetakan File Driver
Mengganti file driver bisa sulit. Sering kali, Anda harus boot ke build aman Microsoft Windows, mengganti biner driver, lalu boot lagi.
Metode alternatif ada menggunakan file pemetaan. Anda dapat menggunakan metode pemetaan ini untuk mengganti driver mode-kernel apa pun (termasuk driver tampilan), driver subsistem Windows apa pun, atau modul mode kernel lainnya. Untuk kesederhanaan, file-file ini disebut driver dalam topik ini, meskipun Anda dapat menggunakan metode ini untuk modul mode kernel apa pun.
Anda dapat menggunakan metode ini setiap kali WinDbg atau KD dilampirkan sebagai debugger kernel. Anda juga dapat menggunakan metode ini pada driver boot, tetapi lebih sulit. Untuk informasi selengkapnya tentang cara menggunakan metode ini dengan driver boot, lihat Mengganti Driver Boot.
Untuk menggunakan peta penggantian driver untuk mengganti file driver, lakukan hal berikut:
Buat file peta penggantian driver. File ini adalah file teks yang mencantumkan driver pada komputer target dan pengandar penggantinya pada komputer host. Anda dapat mengganti sejumlah driver. Misalnya, Anda dapat membuat file yang bernama Mymap.ini di direktori d:\Map_Files komputer host Anda yang berisi informasi berikut.
map \Systemroot\system32\drivers\videoprt.sys \\myserver\myshare\new_drivers\videoprt.sys
Untuk informasi selengkapnya tentang sintaks file ini, lihat Format File Peta Pengganti driver.
Siapkan koneksi debugging kernel ke komputer target, dan mulai debugger kernel (KD atau WinDbg) di komputer host Anda. (Anda tidak perlu benar-benar menerobos masuk ke komputer target.)
Muat file peta penggantian driver dengan melakukan salah satu hal berikut:
Atur variabel lingkungan _NT_KD_FILES sebelum Anda memulai debugger kernel.
D:\Debugging Tools for Windows> set _NT_KD_FILES=d:\Map_Files\mymap.ini D:\Debugging Tools for Windows> kd
Gunakan perintah .kdfiles (Atur Peta Penggantian Driver) setelah Anda memulai debugger kernel.
D:\Debugging Tools for Windows> kd kd> .kdfiles d:\Map_Files\mymap.ini KD file associations loaded from 'd:\Map_Files\mymap.ini'
Anda juga dapat menggunakan perintah .kdfiles untuk menampilkan file peta penggantian driver saat ini atau untuk menghapus peta penggantian driver. Jika Anda tidak menggunakan perintah ini, peta akan tetap ada hingga Anda keluar dari debugger.
Setelah Anda menyelesaikan prosedur ini, peta penggantian driver berlaku.
Setiap kali komputer target akan memuat driver, komputer akan meminta debugger kernel untuk menentukan apakah driver ini telah dipetakan. Jika driver telah dipetakan, file pengganti dikirim melalui koneksi kernel dan disalin melalui file driver lama. Driver baru kemudian dimuat.
Format File Peta Penggantian Driver
Setiap penggantian file driver ditunjukkan oleh tiga baris dalam file peta penggantian driver.
Baris pertama terdiri dari kata "peta".
Baris kedua menentukan jalur dan nama file driver lama pada komputer target.
Baris ketiga menentukan jalur lengkap driver baru. Pengandar ini dapat ditemukan pada komputer host atau pada beberapa server lain.
Anda dapat mengulangi pola informasi ini beberapa kali.
Jalur dan nama file tidak peka huruf besar/kecil, dan nama file driver yang sebenarnya bisa berbeda. File yang Anda tentukan pada baris ketiga disalin melalui file yang Anda tentukan pada baris kedua ketika komputer target akan memuat driver tersebut.
Kdfiles akan mencoba mencocokkan nama file yang disimpan dalam database Service Control Manager (SCM). Nama dalam database SCM identik dengan nama yang diteruskan ke MmLoadSystemImage.
Di Windows 10 dan versi yang lebih baru dari alat penelusuran kesalahan, pemetaan driver berfungsi untuk mencocokkan nama driver secara dinamis dan menentukan jalur yang tepat. Jalur lengkap tidak perlu ditentukan dan ekstensi file bersifat opsional. Anda dapat menggunakan salah satu entri ini untuk mencocokkan driver sistem file NT.
- ntfs
- NTFS
- ntfs.sys
- windows\system32\drivers\ntfs.sys
Anda dapat menggunakan salah satu entri ini untuk mencocokkan driver kernel NT.
- ntoskrnl
- NTOSKRNL
- ntoskrnl.sys
- windows\system32\drivers\ntoskrnl.sys
File peta dapat menyertakan baris kosong dan dapat menyertakan baris komentar yang dimulai dengan tanda angka (#). Namun, setelah "peta" muncul dalam file, dua baris berikutnya harus menjadi driver lama dan driver baru. Baris kosong dan baris komentar tidak dapat memecah blok peta tiga baris.
Contoh berikut menunjukkan file peta penggantian driver.
# Use the # for comments like this one
map
\Systemroot\system32\drivers\videoprt.sys
e:\MyNewDriver\binaries\videoprt.sys
map
\Systemroot\system32\mydriver.sys
\\myserver\myshare\new_drivers\mydriver0031.sys
# This is replacing a beep driver
map
\??\c:\windows\system32\beep.sys
\\myserver\myshare\new_drivers\new_beep.sys
File peta penggantian driver harus berupa file teks, tetapi Anda dapat menggunakan nama file dan ekstensi nama file apa pun (.ini, .txt, .map, dan sebagainya).
Catatan Tambahan
Ketika penggantian driver terjadi, pesan muncul di debugger kernel.
Jika Anda menggunakan CTRL+D (dalam KD) atau CTRL+ALT+D (di WinDbg), Anda akan melihat informasi verbose tentang permintaan penggantian. Informasi ini dapat berguna jika Anda tidak yakin apakah nama yang telah Anda cantumkan cocok dengan yang ada di database SCM.
Anda dapat mengaktifkan opsi bootdebug bcdedit untuk melihat informasi boot awal yang berguna untuk mengganti kernel, hal, atau driver boot.
bcdedit -bootdebug on
Untuk informasi selengkapnya, lihat Referensi Opsi BCDEdit.
Jika debugger kernel keluar, tidak ada lagi penggantian driver yang terjadi. Namun, setiap driver yang telah diganti tidak kembali ke biner lama mereka, karena file driver sebenarnya ditimpa.
Fitur penggantian driver ini secara otomatis melewati Windows File Protection (WFP).
Anda tidak perlu menghidupkan ulang komputer target. Penggantian driver terjadi kapan saja komputer target memuat driver, terlepas dari apakah komputer tersebut telah dimulai ulang. Tentu saja, sebagian besar driver dimuat selama proses boot, jadi dalam praktiknya Anda harus memulai ulang komputer target setelah file peta dimuat.
Jika variabel _NT_KD_FILES ditentukan, file peta penggantian driver yang ditentukan dibaca saat debugger kernel dimulai. Jika Anda mengeluarkan perintah .kdfiles , file yang ditentukan akan segera dibaca. Pada titik ini, debugger memverifikasi bahwa file memiliki format peta/baris/baris dasar. Tetapi jalur aktual dan nama file tidak diverifikasi sampai substitusi terjadi.
Setelah file peta dibaca, debugger menyimpan kontennya. Jika Anda mengubah file ini setelah titik ini, perubahan tidak berpengaruh (kecuali Anda mengeluarkan kembali perintah .kdfiles ).