[Arsip Buletin ^] [Volume 1, Nomor 2 >]
Buletin Internal Sistem Volume 1, Nomor 1
14 April 1999 - Dalam masalah ini:
APA YANG BARU DI INTERNAL SISTEM
- VolumeID untuk Windows 9x
- EFSDump
- ListDLL untuk Compaq Alpha
- "Di dalam Proses Boot, Bagian 2"
- Artikel Majalah Windows NT April Saya
- Tidak Ada Kredit di Mana Jatuh Temponya
- Hal-Hal Yang Tidak Begitu Baru
BERITA INTERNAL
- Win2K Driver Verifier
- Pengujian Y2K dengan Boot.ini
APA YANG AKAN TERJADI
- Spinlock yang diantrekan di Win2K
- Tokenmon
SPONSOR: PERANGKAT LUNAK WINTERNALS
Buletin Internal Sistem disponsori oleh Winternals Software, di Web di http://www.winternals.com. Winternals Software adalah pengembang dan penyedia alat sistem canggih terkemuka untuk Windows NT/2K. Produk Perangkat Lunak Winternals termasuk FAT32 untuk Windows NT 4.0, ERD Commander (kemampuan boot-disk untuk Windows NT), dan NTRecover.
Halo semuanya,
Selamat datang di angsuran pertama Dari Buletin Internal Sistem. Saya senang mengatakan bahwa buletin telah memperoleh 1000 pelanggan sejak pengumumannya sedikit lebih dari seminggu yang lalu.
Tujuan saya dalam buletin adalah untuk memberi Anda informasi tepat waktu tentang utilitas dan artikel baru yang muncul di Systems Internals, ditambah memberi Anda tidbit informasi tentang internal Windows yang tidak memiliki forum yang sesuai di situs web Systems Internals. Jika Anda memiliki komentar atau saran mengenai buletin, jangan ragu untuk meneruskannya kepada saya di mark@.... Selain itu, teruskan buletin kepada siapa pun yang Anda kenal yang mungkin tertarik dengannya. Instruksi tentang berlangganan, berhenti berlangganan, atau memodifikasi langganan Anda disediakan di akhir buletin.
Terima kasih!
-Tanda
APA YANG BARU DI INTERNAL SISTEM
VOLUMEID UNTUK WINDOWS 9X
Meskipun Windows NT dan Windows 9x memungkinkan Anda mengubah label pada drive logis atau disket menggunakan perintah "label", mereka tidak menyediakan sarana bagi Anda untuk dapat mengubah ID volume yang mereka tetapkan saat Anda memformat drive. Program VolumeID, yang telah tersedia untuk Windows NT di situs Sistem Internal selama lebih dari setahun, baru saja di-port ke Windows 9x. Applet ini memungkinkan Anda mengubah ID volume pada hard drive dan disket menjadi apa pun yang Anda inginkan.
VolumeID menggunakan API yang memungkinkan aplikasi membaca dan menulis langsung ke drive logis, dan pada Win9x, drive fisik (disket), melewati sistem file. Pada Windows NT/2K VolumeID menggunakan ReadFile dan WriteFile reguler untuk mengakses data drive mentah - triknya adalah cara menentukan nama volume yang ingin diaksesnya. Anda dapat mengetahui cara mengakses drive fisik atau logis dari aplikasi di bawah Artikel Windows NT/2K di Microsoft Knowledge Base Q100027. Untuk akses Windows 9x ke drive logis, Anda dapat mendasarkan kode Anda pada contoh kode yang disediakan di artikel Microsoft Knowledge Base Q174569. Jika Anda perlu melakukan akses drive floppy langsung dari aplikasi Anda pada Windows 9x, gunakan win32 IOCTL VWIN32_DIOC_DOS_INT13, yang didokumenkan dalam MSDN.
Unduh VolumeID di http://www.sysinternals.com/misc.htm.
EFSDUMP
Windows 2000 akan menjadi debut teknologi enkripsi file bawaan Microsoft, Sistem File Enkripsi. Dengan EFS datang sejumlah API baru untuk memanipulasi file terenkripsi, termasuk satu, QueryUsersOnEncryptedFile, yang memungkinkan Anda melihat pengguna mana yang terdaftar untuk memiliki akses ke file terenkripsi, dan pengguna mana yang terdaftar sebagai Agen Pemulihan untuk file-file tersebut. Saya telah menulis program kecil bernama EFSDump yang memungkinkan Anda untuk dengan mudah melihat informasi ini untuk file terenkripsi pada sistem Anda.
Meskipun saya sedang dalam subjek API EFS, ada sejumlah API baru yang belum didokumentasikan per MSDN April, sesuatu yang cukup mengganggu pada tahap akhir ini dalam siklus rilis Windows 2000. Terutama, OpenEncryptedFileRaw, ReadFileEncryptedRaw, WriteFileEncryptedRaw, dan CloseEncryptedFileRaw (semua diekspor oleh ADVAPI32.DLL Win2K) semuanya saat ini tidak terdokumentasi. Penggunaan API ini diperlukan oleh aplikasi apa pun yang ingin mencadangkan file terenkripsi, yang berarti bahwa Microsoft meneruskan informasi tentang mereka hanya untuk memilih mitra, atau perusahaan perangkat lunak cadangan harus berebut untuk mengeluarkan produk mereka ketika Microsoft akhirnya mendokumentasikannya secara publik. Satu hal yang pasti, pengembang program NTBACKUP Windows 2000 telah memiliki akses ke dokumentasi API: NTBACKUP Win2K Beta 3 secara aktif menggunakan API.
Jika Anda tertarik dengan internal EFS, pastikan untuk memeriksa seri dua bagian Juni/Juli saya yang akan datang di EFS di kolom "Internal NT" saya di Windows NT Magazine. Dalam artikel ini saya menjelaskan dengan tepat di mana FEK (Kunci Enkripsi File) dan kunci EFS pengguna disimpan, bagaimana proses enkripsi dilakukan oleh NTFS, driver EFS, dan LSASRV (Server Subsistem Otoritas Keamanan Lokal), dan tentu saja, cara kerja dekripsi.
Unduh EFSDump dengan kode sumber lengkap di http://www.sysinternals.com/misc.htm.
LISTDLLS UNTUK COMPAQ ALPHA
Jumlah utilitas yang tersedia untuk Alpha di Systems Internals terus bertambah. Penambahan terbaru adalah ListDLL, utilitas baris perintah yang memungkinkan Anda melihat informasi DLL untuk menjalankan proses. Alat HandleEx saya memungkinkan Anda melihat informasi ini, serta informasi tentang handel (file, proses, utas, objek sinkronisasi) yang prosesnya telah dibuka, tetapi HandleEx adalah alat GUI sehingga tidak selalu nyaman (tidak dapat dijalankan di dalam file batch misalnya).
Apakah Anda ingin tahu tentang rasio unduhan utilitas Internal Sistem khas versi x86 ke versi Alpha yang sesuai? Sekitar 20:1, yang melacak perkiraan industri basis pengguna Alpha NT yang dipasang sebagai 5% dari total pasar NT.
Anda dapat mengunduh ListDLL dan port Alpha lainnya, termasuk HandleEx, di http://www.sysinternals.com/alpha.htm.
"DI DALAM PROSES BOOT, BAGIAN 2"
Kolom "Internal NT" Januari saya dari Windows NT Magazine sekarang tersedia secara on-line melalui situs web Windows NT Magazine. Anda dapat menemukan tautan ke tautan tersebut, serta ke bagian 1 dan kolom "Internal NT" yang lebih lama, di halaman Publikasi di Systems Internals: http://www.sysinternals.com/publ.htm.
ARTIKEL MAJALAH WINDOWS NT APRIL SAYA
Selain itu, pastikan untuk melihat artikel fitur saya dalam edisi April Windows NT Magazine, "Linux and the Enterprise". Saya mengungkapkan beberapa masalah signifikan sehubungan dengan kernel Linux 2.2 dan aplikasi server jaringan (aplikasi "perusahaan"), yang pada akhirnya akan mencegah versi kernel Linux ini bersaing head-to-head dengan NT dan varian UNIX lainnya dalam hal performa.
TIDAK ADA KREDIT YANG JATUH TEMPONYA
Pada catatan terkait, Anda mungkin telah mendengar tentang D.H. Brown yang baru dirilis (perusahaan analis) pada kemampuan Linux sebagai sistem operasi perusahaan. Ternyata penulis laporan sangat "dipinjam" dari email saya bahwa seseorang secara publik memposting ke kernel Linux Grup berita Usenet kembali pada bulan Januari. Jika Anda memiliki akses ke laporan dan membaca halaman (44 dan 45) yang membahas Linux dan multiprosesor (laporan tidak tersedia untuk umum - Anda harus membelinya dengan jumlah besar), dan kemudian membaca email saya di Deja News, Anda akan melihat paralel langsung, hingga detail kecil.
HAL-HAL YANG TIDAK BEGITU BARU
Saya menggunakan bagian buletin ini untuk memunculkan perubahan terbaru pada situs Sistem Internal yang mungkin tidak Anda ketahui, dan/atau untuk memberikan informasi lebih lanjut tentang utilitas daripada apa yang tersedia di situs. Misalnya, beberapa minggu yang lalu kami merilis Filemon v4.1. Versi Filemon ini mampu memantau aktivitas Named Pipe dan Mail Slot di bawah Windows NT/2K. Peningkatan kode yang diperlukan untuk mendukung ini relatif kecil, karena Named Pipes dan Mailslots diimplementasikan sebagai driver sistem file. Bagian keras (melelahkan) adalah mencari tahu IOCTL privat (Perintah Kontrol I/O) yang didukung sistem file khusus ini sehingga Filemon dapat menunjukkannya. Anda dapat mengunduh Filemon (yang berfungsi pada Windows NT/2K dan Windows 9x) di http://www.sysinternals.com/filemon.htm.
Jika Anda ingin mempelajari lebih lanjut tentang cara kerja Filemon secara internal, lihat kolom "NT Internals" Majalah Windows NT Februari saya, yang berjudul "Di dalam Utilitas NT". Artikel ini menjelaskan cara menggunakan Filemon, Regmon, NTFSDOS, NewSID dan HandleEx, dan memberi tahu Anda sedikit tentang bagaimana fungsinya.
BERITA INTERNAL
PEMVERIFIKASI DRIVER WINDOWS 2000
Windows 2000 Beta 3 memperkenalkan bantuan pengembangan driver perangkat yang sangat kuat yang disebut Driver Verifier. Alat ini bekerja dengan kode di kernel untuk mendapatkan kontrol driver Anda dan menjalankannya untuk kepatuhan terhadap aturan mode kernel dengan cara yang sebelumnya tidak mungkin. Driver perangkat Buggy sejauh ini adalah kontribusi paling signifikan terhadap reputasi di antara banyak orang bahwa NT adalah sistem operasi yang tidak stabil, dan alat ini bertujuan untuk memperbaiki reputasi itu dengan membantu penulis driver menemukan bug mereka sebelum pengguna melakukannya.
Beberapa jenis masalah halus dapat membuatnya melalui pengujian driver kasual (jenis pengujian yang paling umum dilakukan di bawah batasan waktu-ke-pasar yang ketat), dan bahkan tergelincir melalui tes stres serius. Salah satu jenis masalah driver umum adalah driver yang mengakses memori halaman di "IRQL yang ditinggikan" (prioritas interupsi tinggi). Jika memori yang diakses driver kebetulan ada secara fisik pada saat akses (belum di-page out ke file halaman), maka akses ilegal akan lugas. Lepaskan driver yang melanggar aturan ini ke dunia liar pengguna dan terikat untuk muncul, yang mengakibatkan crash Layar Biru.
Jenis kesalahan pemrograman driver umum lainnya adalah pengembang untuk menulis kode dengan asumsi bahwa memori halaman dan/atau non-halaman akan selalu tersedia yaitu mereka tidak memeriksa nilai pengembalian untuk alokasi. Jika kumpulan habis dan driver menerima alamat buffer NULL, driver dengan mudah mendereferensikan sistem ke dalam Layar Biru. Meskipun kelelahan kumpulan adalah kejadian yang jarang terjadi, itu bukan sesuatu yang harus memberi Administrator Sistem Layar Biru. Bug memori terkait adalah buffer overrun atau underrun, di mana driver membaca atau menulis di luar buffer yang telah dialokasikan.
Driver Verifier mengatasi masalah IRQL dengan mengganti panggilan ke semua fungsi yang memanipulasi IRQL dalam driver (misalnya KeRaiseIrql, KeAcquireSpinLock) dengan fungsi kernel pemverifikasi yang sesuai (VerifierKeRaiseIrql, VerifierKeAcquireSpinLock) pada saat driver dimuat. Setiap kali IRQL dinaikkan ke DISPATCH_LEVEL atau lebih tinggi, kode pemverifikasi memanggil fungsi Memory Manager internal, MmTrimAllPageableSystemMemory(), untuk memaksa semua data halaman keluar dari memori fisik. Dengan demikian, instan bahwa driver melanggar aturan IRQL untuk tidak mengakses data atau kode yang dapat di-pageable dari DISPATCH_LEVEL atau lebih tinggi, Manajer Memori akan mendeteksi upaya untuk mengakses halaman yang tidak ada dan melempar Layar Biru. Ini memungkinkan pengembang dengan cepat menangkap jenis bug ini sebelum driver keluar dari pintu karena mereka dapat men-debug crash dan melihat driver mereka duduk di tumpukan kesalahan.
Driver Verifier menyelesaikan pengujian penggunaan Memori dengannya menambal tabel impor driver untuk diverifikasi sehingga driver memanggil fungsi memori pemverifikasi alih-alih versi kernel standar. Misalnya, panggilan ke ExAllocatePool diganti dengan panggilan ke VerifierAllocatePool. Ada dua teknik yang digunakan Pemverifikasi untuk membantu pengembang menemukan bug memori dengan cepat. Yang pertama adalah menggunakan kumpulan memori khusus di mana halaman penjaga (halaman penjaga adalah halaman yang tidak valid) ditempatkan tepat melewati akhir buffer. Selain itu, bagian halaman tempat buffer dialokasikan yang mendahului buffer diisi dengan tanda tangan. Overruns yang berada dalam halaman di luar akhir buffer terdeteksi segera karena akan mengakibatkan kesalahan halaman ilegal di halaman penjaga. Underruns yang melibatkan modifikasi pada data sebelum buffer terdeteksi oleh Verifier ketika driver membatalkan alokasi memori, karena tanda tangan akan berubah.
Driver yang selalu mengharapkan kumpulan yang tidak kosong akan ditipu untuk menghasilkan crash oleh Verifier dengan menggunakan "injeksi kesalahan memori". Anda dapat mengonfigurasi Verifier untuk gagal secara acak alokasi kumpulan driver.
Ada beberapa jenis kesalahan lain yang diperiksa Driver Verifier, termasuk konsistensi IRP (Paket Permintaan I/O), dan perlindungan baca-saja dari halaman kode sistem dan driver.
Jika Anda adalah pengembang driver perangkat, Anda akan melakukan sendiri, perusahaan Anda, dan komunitas NT dengan menguji dengan Verifier. Perhatikan bahwa Anda juga harus menguji driver NT 4.0 Yang kompatibel dengan Win2K segera setelah Anda memiliki akses ke Driver Verifier (sebagian besar pengembang akan mendapatkannya dengan pengiriman MSDN Win2K Beta 3 pada akhir April atau Mei).
Untuk informasi selengkapnya, lihat Pemverifikasi Driver.
PENGUJIAN Y2K DENGAN BOOT. INI
Jika Anda sering memeriksa situs Web Sistem Internal maka Anda mungkin sudah mengetahui BOOT Win2K baru yang tidak terdokumentasi. Sakelar INI, /YEAR. Saya tidak menyebutkan di situs Web bahwa sakelar juga didukung oleh NT 4.0 Service Pack 4. Sakelar ini memungkinkan Anda melakukan spoof NT dan semua perangkat lunak pada sistem NT untuk berpikir bahwa ini adalah tahun yang berbeda. Misalnya, /YEAR=2001 akan membuat sistem berpikir itu adalah 2001 alih-alih 1999. Dengan demikian, sakelar sangat ideal untuk menguji masalah Y2K pada tingkat perangkat lunak apa pun, dan keuntungan menggunakannya alih-alih mengatur ulang jam BIOS secara manual (melalui applet Jam, misalnya) adalah bahwa perubahan bersifat sementara dan hanya aktif ketika Anda boot ke instalasi yang memiliki sakelar yang ada di BOOT-nya. Baris INI. Ini memudahkan untuk membuat instalasi Y2K khusus hanya dengan mengambil boot line yang ada dari BOOT. INI, duplikasi, dan tambahkan sakelar /YEAR.
APA YANG AKAN TERJADI
Harapkan buletin berikutnya dalam beberapa minggu. Tip internal yang akan saya miliki untuk Anda lain kali adalah tentang Queued Spinlocks, jenis baru spinlock yang digunakan Windows 2000 untuk spinlock globalnya. Berikut adalah spinlock global yang ada di Windows 2000:
- KiDispatcherLock: kunci database penjadwal
- KiContext-SwapLock: kunci pertukaran tapak
- MmPfnLock: kunci database bingkai halaman fisik
- MmSystemSpaceLock: kunci ruang alamat mode kernel
- CcMasterSpinLock: spinlock global Manajer Cache
- CcVacbSpinLock: kunci array pemetaan Manajer Cache
Alih-alih menggunakan spinlock kernel biasa (KeAcquireSpinLock, KeReleaseSpinLock) untuk kunci global ini seperti yang dilakukan NT 4.0, kernel Windows 2000 menggunakan spinlock antrean (KeAcquireQueuedSpinLock, KeReleaseQueuedSpinLock). Kunci ini memiliki beberapa properti menarik yang meminimalkan aktivitas bus pada SMP. Lain kali saya akan memberi tahu Anda bagaimana spinlock antrean diimplementasikan.
Segera hadir di Systems Internals adalah Tokenmon, namun alat pemantauan lain. Tokenmon akan menunjukkan kepada Anda informasi terperinci tentang semua aktivitas terkait token pada sistem Anda, termasuk login, keluar, penggunaan hak istimewa, dan peniruan identitas.
Terima kasih telah membaca Buletin Internal Sistem.
Diterbitkan Rabu, 14 April 1999 19:16 PM oleh ottoh