Hari ini, saya akan memperkenalkan kepada Anda fitur baru Windows 7 / Windows Server 2008 R2 - host konsol (ConHost.exe).
Faktanya, baik sebagai pengguna biasa atau administrator perusahaan, kita akan menggunakan aplikasi konsol kurang lebih dalam aplikasi Windows sehari-hari serta proses operasi dan pemeliharaan. Aplikasi konsol tidak memiliki antarmuka pengguna. Kita perlu melakukan operasi input dan output melalui command prompt (CMD, ini bukan DOS, banyak orang yang bingung).
Jadi mari kita pikirkan, aplikasi konsol apa yang disertakan dengan Windows?
Faktanya, yang paling umum termasuk cmd.exe, nslookup.exe dan telnet.exe.
Di versi Windows sebelumnya, semua aplikasi yang mewakili aktivitas non-GUI (yaitu, aplikasi konsol) dikoordinasikan melalui proses sistem Csrss.exe ketika ingin dijalankan di desktop. Ketika aplikasi konsol perlu menerima karakter, ia memanggil "API konsol" kecil di Kernel32.dll agar Kernel32 menghasilkan LPC untuk memanggil CSRSS. Saat ini, CSRSS akan memeriksa dan memverifikasi antrian input jendela konsol, dan mengembalikan hasil mode karakter ke aplikasi konsol melalui Kernel32 untuk asosiasi. Mekanisme pemrosesan pesan aplikasi konsol di versi Windows awal ditunjukkan pada gambar di bawah ini:
Mekanisme pemrosesan ini telah menimbulkan masalah: meskipun aplikasi konsol dijalankan dalam konteks pengguna normal, Csrss.exe selalu berjalan di bawah izin akun sistem lokal. Oleh karena itu, dalam beberapa kasus, malware yang dikembangkan oleh "orang jahat" dapat memperoleh lebih banyak hak istimewa melalui Csrss.exe yang dijalankan dengan izin akun sistem lokal. Mode serangan ini disebut Shatter Attack.
Di era Win7 dan Windows Server 2008 R2, semua aplikasi konsol ditempatkan dalam proses konteks baru ConHost.exe untuk dieksekusi, dan ConHost (host konsol) dan program konsol dijalankan dalam konteks tingkat keamanan yang sama, bukannya mengeluarkan permintaan pesan LPC ke CSRSS untuk diproses, melainkan meminta ConHost. Oleh karena itu, upaya aplikasi apa pun untuk mengeksploitasi permintaan pesan yang menyebabkan peningkatan hak istimewa secara otomatis tidak akan berhasil. Gambar berikut adalah diagram skema mekanisme baru yang digunakan di Windows 7 dan Windows Server 2008 R2:
ConHost menggantikan perubahan permanen dalam cara I/O ditangani oleh aplikasi konsol. Pengguna tidak dapat memaksa Windows untuk kembali ke perilaku konsol "mode lama" melalui registri atau Kebijakan Grup. Oleh karena itu, pengguna perlu menguji aplikasi secara menyeluruh sebelum melakukan upgrade ke Windows 7 atau Windows Server 2008 R2. Harap diingat bahwa meskipun sebagian besar fungsi beberapa aplikasi diimplementasikan melalui GUI, data masih diproses secara batch melalui konsol atau antarmuka fungsional lainnya di latar belakang. Oleh karena itu, sangat perlu dilakukan pengujian fungsional aplikasi secara komprehensif sebelum migrasi atau leveling.
Ketika suatu aplikasi tidak dapat digunakan secara normal di Windows 7, sebaiknya kita uji terlebih dahulu dan jalankan kembali dengan hak administrator untuk melihat apakah masalahnya terjadi. Bahkan, kita kemudian dapat menggunakan Process Monitor untuk memantau apakah aplikasi tersebut memiliki hak akses terhadap file atau registri normal. Jika aplikasi masih tidak dapat berjalan normal setelah mengatasi masalah di atas, Anda perlu mempertimbangkan untuk menghubungi ISV atau pengembangnya.
Jika suatu aplikasi mogok, file crash dump yang sesuai akan sangat membantu pengembang dan ISV untuk menemukan inti masalahnya. Jika aplikasi berhenti merespons, Anda dapat mencoba menggunakan ADPlus untuk mengambilnya dan dump proses ConHost.exe yang terkait. Aplikasi konsol dapat berbagi banyak subproses dari konsol Windows. Misalnya, ketika pengguna memulai Telnet dari jendela CMD, Telnet.exe akan menjadi subproses dari Cmd.exe. Dalam hal ini, host ConHost.exe memproses contoh pesan dari proses induk dan proses anak. Dengan menggunakan Process Explorer kami dapat mengonfirmasi proses mana yang ditangani ConHost.exe:
Anda juga dapat menggunakan fungsi "Analisis Rantai Tunggu" di Windows 7 Resource Monitor untuk melihat proses aplikasi dari proses ConHost.exe:
Terakhir, jangan lupa untuk menguji aplikasi sepenuhnya sebelum migrasi!