Bagikan melalui


Application Verifier

Application Verifier (AppVerifier) adalah alat verifikasi runtime untuk kode yang tidak dikelola. Alat ini sangat membantu untuk menemukan masalah yang dapat sulit diidentifikasi dengan pengujian aplikasi standar atau teknik pengujian driver. AppVerifier dapat membantu menemukan kesalahan pemrograman yang halus, masalah keamanan, dan masalah hak istimewa akun pengguna terbatas.

Gambaran Umum AppVerifier

Salah satu tantangan paling signifikan bagi programmer, arsitek perangkat lunak, penguji, dan konsultan keamanan, adalah memahami jalur eksekusi variabel aplikasi saat disebarkan ke dalam produksi. Bahkan dengan akses ke kode sumber, mungkin sulit untuk memahami semua yang dapat terjadi selama eksekusi. Berbagai dependensi seperti beberapa grup yang berkontribusi pada kode atau berolahraga komponen eksternal dapat meningkatkan kompleksitas untuk pemecahan masalah.

AppVerifier (AppVerif.exe) is a dynamic verification tool for user-mode applications. Ini dapat mendeteksi kesalahan dalam aplikasi mode pengguna apa pun yang tidak didasarkan pada kode terkelola, termasuk driver mode pengguna. Alat ini memantau tindakan aplikasi saat aplikasi berjalan. Ini tunduk pada aplikasi ke berbagai stres dan pengujian, dan menghasilkan laporan tentang potensi kesalahan dalam eksekusi atau desain aplikasi.

Ketika digunakan di seluruh siklus hidup pengembangan perangkat lunak, AppVerifier dapat membawa manfaat biaya untuk upaya pengembangan. Ini memfasilitasi mengidentifikasi masalah sejak dini ketika lebih mudah dan lebih murah untuk diperbaiki. Alat ini juga membantu mendeteksi kesalahan yang sebelumnya tidak diperhatikan. Ini memastikan aplikasi akhir dapat dijalankan di lingkungan terbatas (misalnya, nonadmin).

Penginstalan dan persyaratan AppVerifier

AppVerifier disertakan dalam Windows Software Development Kit (SDK). Untuk menginstal Pemverifikasi Aplikasi, pilih kotak centang untuk alat selama penginstalan SDK.

Cuplikan layar menu utama Pemverifikasi Aplikasi dengan satu aplikasi pengujian dipilih dan pengujian yang tercantum di sisi kanan.

Untuk menggunakan AppVerifier, tinjau kondisi dan persyaratan berikut:

  • Anda dapat menggunakan AppVerifier sendiri atau dengan debugger mode pengguna.

  • Pengguna saat ini harus menjadi anggota grup Administrator pada komputer.

  • AppVerifier tidak mendukung ARM64EC.

Data yang dapat Anda periksa dengan AppVerifier

AppVerifier adalah alat yang dirancang untuk mendeteksi dan membantu men-debug kerusakan memori, kerentanan keamanan penting, dan masalah hak istimewa akun pengguna terbatas. AppVerifier membantu dalam pembuatan aplikasi yang andal dan aman dengan memantau interaksi aplikasi dengan sistem operasi Microsoft Windows. Ini memprofilkan penggunaan objek, registri, sistem file, dan API Win32 sistem operasi (termasuk tumpukan, handel, dan kunci). AppVerifier juga menyertakan pemeriksaan untuk memprediksi seberapa baik performa aplikasi di lingkungan nonadmin.

Masalah yang dapat Anda selidiki dengan AppVerifier

AppVerifier membantu menentukan kapan aplikasi menggunakan API dengan benar. Alat ini dapat memeriksa masalah berikut dalam aplikasi Anda:

  • API TerminateThread tidak aman
  • Penggunaan API Thread Local Storage (TLS) yang salah
  • Penggunaan manipulasi ruang virtual yang salah (misalnya, VirtualAlloc, MapViewOfFile)
  • Aplikasi menyembunyikan pelanggaran akses dengan menggunakan penanganan pengecualian terstruktur
  • Aplikasi mencoba menggunakan handel yang tidak valid
  • Kerusakan memori atau masalah dalam tumpukan
  • Aplikasi kehabisan memori di bawah sumber daya rendah
  • Penggunaan bagian penting yang salah
  • Aplikasi yang berjalan di lingkungan administratif tidak dapat berjalan di lingkungan dengan hak istimewa yang berkurang
  • Aplikasi yang berjalan sebagai pengguna terbatas dapat menyebabkan potensi masalah
  • Variabel yang tidak diinisialisasi dalam panggilan fungsi di masa mendatang dalam konteks utas

Pengujian yang dapat Anda jalankan dengan AppVerifier

AppVerifier terdiri dari serangkaian pengujian yang disebut "lapisan verifikasi." Lapisan dapat diaktifkan atau dinonaktifkan untuk setiap aplikasi yang Anda periksa.

  • Untuk melihat pengujian tertentu, perluas lapisan verifikasi dalam set.

  • Untuk mengaktifkan pengujian aplikasi, pilih kotak centang untuk pengujian.

  • To turn on all the tests in a verification layer, such as Basics, select the checkbox at the top level.

Tabel berikut mencantumkan 13 jenis pengujian yang dapat dilakukan AppVerifier dan menyediakan tautan ke artikel untuk informasi selengkapnya.

Test type Description More information
Basics At a minimum, you should run Application Verifier with the Basics setting selected. Setiap pengujian dasar memeriksa area yang dapat menyebabkan crash atau skenario negatif lainnya yang memiliki efek langsung dan signifikan pada pengalaman pelanggan. Pemverifikasi Aplikasi - Pengujian dalam Pemverifikasi Aplikasi (Dasar- Dasar)
Compatibility Pengujian Lapisan Verifikasi Kompatibilitas membantu mengidentifikasi aplikasi yang mungkin memiliki masalah dengan sistem operasi Microsoft Windows. Banyak dari pemeriksaan ini juga dapat digunakan untuk menguji persyaratan logo. Pemverifikasi Aplikasi - Pengujian dalam Pemverifikasi Aplikasi (Kompatibilitas)
Cuzz Lapisan verifikasi Concurrency Fuzzing (Cuzz) mendeteksi bug konkurensi dan kondisi perlombaan data. Cuzz menyesuaikan penjadwalan utas dengan menyuntikkan penundaan acak pada titik kunci dalam kode aplikasi. Pemverifikasi Aplikasi - Pengujian dalam Pemverifikasi Aplikasi (Cuzz)
Simulasi Sumber Daya Rendah Simulasi sumber daya rendah mencoba mensimulasikan lingkungan di bawah sumber daya rendah, seperti kehabisan memori. Simulasi ini mengidentifikasi bug yang terjadi dalam kondisi memori rendah. This test is also referred to as Fault Injection. Pemverifikasi Aplikasi - Pengujian dalam Pemverifikasi Aplikasi (Simulasi Sumber Daya Rendah)
LuaPriv Pengujian Limited User Account Privilege Predictor (LuaPriv) bersifat prediktif dan diagnostik, dan bekerja untuk memunculkan masalah terkait menjalankan aplikasi dengan hak istimewa administratif. Pengujian juga mengungkapkan apakah aplikasi dapat berfungsi jika Anda menjalankan aplikasi dengan hak istimewa yang dikurangi (umumnya, sebagai pengguna umum). Pemverifikasi Aplikasi - Pengujian dalam Pemverifikasi Aplikasi (LuaPriv)
Miscellaneous Pengujian lain-lain memeriksa berbagai kondisi, seperti mendeteksi API berbahaya yang menjalankan tindakan yang tidak aman. Pemverifikasi Aplikasi - Pengujian dalam Pemverifikasi Aplikasi (Lain-lain)
Networking Pengujian jaringan mencari penggunaan API WinSock yang tidak tepat. Misalnya, jika NETWORKING API memanggil sebelum panggilan berhasil ke WSAStartup() metode , atau setelah panggilan keberhasilan penyeimbangan ke metode .WSACleanup() Pemverifikasi Aplikasi - Pengujian dalam Pemverifikasi Aplikasi (Jaringan)
NTLM Memantau penggunaan API AcquireCredentialsHandle autentikasi dan InitializeSecurityContext untuk mendeteksi penggunaan protokol NT LAN Manager (NTLM). NTLM adalah protokol autentikasi yang kedaluarsa dengan kelemahan yang berpotensi membahayakan keamanan aplikasi dan sistem operasi. Pemverifikasi Aplikasi - Pengujian dalam Pemverifikasi Aplikasi (NTLM)
Printing Print Verifier membantu menemukan dan memecahkan masalah yang dapat mengakibatkan aplikasi memanggil subsistem cetak. Print Verifier menargetkan dua lapisan subsistem cetak, lapisan PrintAPI dan lapisan PrintDriver. Pemverifikasi Aplikasi - Pengujian dalam Pemverifikasi Aplikasi (Pencetakan)
Webservices Lapisan Verifikasi Windows Webservices API (WWSAPI) memeriksa penggunaan WWSAPI yang tepat, seperti panggilan WWSAPI yang mereferensikan objek WWSAPI intrinsik yang tidak valid, atau panggilan WWSAPI dengan referensi ke objek utas tunggal yang sudah digunakan. Pemverifikasi Aplikasi - Pengujian dalam Pemverifikasi Aplikasi (WebServices)
Services Layanan menguji penggunaan Layanan Windows yang tepat. Misalnya, pengujian memverifikasi apakah layanan dimulai dan dihentikan dengan benar. Pemverifikasi Aplikasi - Hentikan Kode - Layanan
Perf Pengujian Perf memeriksa penggunaan API yang efisien yang memengaruhi performa sistem dan konsumsi energi, seperti memanggil fungsi Windows yang menggunakan periode tunggu yang salah. Pemverifikasi Aplikasi - Hentikan Kode - Perf
Hangs Tes Hangs memeriksa penggunaan API yang menyebabkan sistem menjadi tidak responsif. Misalnya, ketika utas DllMain sedang menunggu utas lain yang diblokir. Pemverifikasi Aplikasi - Hentikan Kode - Macet

Cara kerja AppVerifier

AppVerifier bekerja dengan memodifikasi Tabel Metode DLL yang tidak dikelola sehingga pemeriksaan yang diperlukan dilakukan sebelum fungsi nyata dijalankan (pendekatan ini juga disebut "Function Hooking"). Misalnya, alamat metode API CreateFileA Win32 diganti dengan metode AppVerifier internal yang memicu serangkaian pengujian yang, ketika positif, dicatat.

Ketika proses baru dimulai, kontrol teknik Hooking Tabel Metode AppVerifier dicapai dengan entri dalam kunci registri tertentu. Jika entri registri ada, DLL AppVerifier dimuat dalam proses yang baru dibuat yang menangani penggantian Tabel Metode di DLL dan DLL yang ada yang dimuat nanti. Karena kait dibuat ketika DLL dimuat, AppVerifier tidak dapat digunakan pada proses yang sedang berjalan.

Antarmuka pengguna (UI) AppVerifier digunakan untuk mengontrol pengaturan Kunci Registri dan memberikan informasi tentang log yang ada. After the application and tests are set within the UI and you select Save, the Registry settings are configured. Anda kemudian memulai ulang aplikasi, yang memulai pemantauan. Perlu diingat bahwa pengaturan tetap ada sampai aplikasi dihapus dari AppVerifier.

When AppVerifier identifies a problem, a verifier stop occurs. Alat ini menyediakan angka yang mengidentifikasi sifat dan alasan yang tepat untuk berhenti dalam eksekusi.

AppVerifier dan Siklus Hidup Pengembangan Perangkat Lunak

Ini adalah praktik yang baik untuk menggunakan Pemverifikasi Aplikasi di seluruh siklus hidup pengembangan perangkat lunak Anda. Berikut adalah beberapa saran:

  • Requirements Phase: Plan to use AppVerifier to help determine app requirements. Alokasikan waktu untuk menjalankan alat dan menindaklanjuti masalah yang diidentifikasi.

  • Design Phase: Plan to use AppVerifier as you design your app. Tentukan komponen mana (modul, DLL, atau EXEs) yang akan diuji.

  • Implementation Phase: Run AppVerifier on stable builds (from Alpha to RTM) of the different components under development. Uji komponen secara individual dan kolektif.

  • Verification Phase: Test engineers should run all tests (both manual and automatic) with AppVerifier for the initial verification. Fase dalam siklus ini adalah pertama kalinya aplikasi didorong ke batas. Perilaku dan data tak terduga umumnya ditemukan selama verifikasi awal. AppVerifier juga merupakan alat yang ampuh untuk konsultan keamanan yang menjalankan audit (kotak hitam dan kotak putih). Alat ini memungkinkan enumerasi cepat serangan/eksploitasi vektor nyata (atau potensial).

  • Release Phase: Clients and security consultants can use AppVerifier on the released binaries to identify potential security vulnerabilities.

  • Fase Dukungan dan Layanan: Gunakan AppVerifier untuk memastikan perubahan kode seperti pembaruan dan paket layanan tidak memperkenalkan regresi.

Bagian ini mencakup: