Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Application Verifier (AppVerifier) to narzędzie weryfikacji środowiska uruchomieniowego dla kodu niezarządzanego. Narzędzie jest przydatne do znajdowania problemów, które mogą być trudne do zidentyfikowania przy użyciu standardowych technik testowania aplikacji lub testowania sterowników. Program AppVerifier może pomóc w znalezieniu drobnych błędów programowania, problemów z zabezpieczeniami i ograniczonych problemów z uprawnieniami konta użytkownika.
Omówienie elementu AppVerifier
Jednym z najważniejszych wyzwań dla programistów, architektów oprogramowania, testerów i konsultantów ds. zabezpieczeń jest zrozumienie zmiennych ścieżek wykonywania aplikacji podczas ich wdrażania w środowisku produkcyjnym. Nawet w przypadku dostępu do kodu źródłowego trudno jest zrozumieć wszystko, co może wystąpić podczas wykonywania. Różne zależności, takie jak wiele grup współtworzenia kodu lub wykonywanie składników zewnętrznych, może zwiększyć złożoność rozwiązywania problemów.
AppVerifier (AppVerif.exe) is a dynamic verification tool for user-mode applications. Może wykrywać błędy w dowolnej aplikacji w trybie użytkownika, która nie jest oparta na kodzie zarządzanym, w tym sterownikach trybu użytkownika. Narzędzie monitoruje akcje aplikacji podczas działania aplikacji. Podlega ona aplikacji różnym stresom i testom oraz generuje raport o potencjalnych błędach podczas wykonywania lub projektowania aplikacji.
W przypadku używania w całym cyklu życia tworzenia oprogramowania program AppVerifier może przynieść korzyści w zakresie programowania. Ułatwia identyfikowanie problemów na wczesnym etapie, gdy są łatwiejsze i tańsze do rozwiązania. Narzędzie pomaga również wykrywać błędy, które były wcześniej niezauważone. Gwarantuje to, że ostateczna aplikacja może być wykonywana w środowiskach ograniczonych (na przykład nieadmin).
Instalacja i wymagania dotyczące aplikacji AppVerifier
Element AppVerifier jest dołączony do zestawu Sdk (Software Development Kit) systemu Windows. Aby zainstalować Weryfikator aplikacji, zaznacz pole wyboru narzędzia podczas instalacji zestawu SDK.
Aby użyć aplikacji AppVerifier, zapoznaj się z następującymi warunkami i wymaganiami:
Możesz użyć samego narzędzia AppVerifier lub debugera trybu użytkownika.
Bieżący użytkownik musi być członkiem grupy Administratorzy na komputerze.
Aplikacja AppVerifier nie obsługuje ARM64EC.
Dane, które można sprawdzić za pomocą narzędzia AppVerifier
AppVerifier to narzędzie przeznaczone do wykrywania i debugowania uszkodzeń pamięci, krytycznych luk w zabezpieczeniach i ograniczonych problemów z uprawnieniami konta użytkownika. Aplikacja AppVerifier ułatwia tworzenie niezawodnych i bezpiecznych aplikacji przez monitorowanie interakcji aplikacji z systemem operacyjnym Microsoft Windows. Profiluje użycie obiektów, rejestru, systemu plików i interfejsów API Win32 (w tym sterty, uchwytów i blokad). Narzędzie AppVerifier zawiera również testy umożliwiające przewidywanie, jak dobrze aplikacja może działać w środowiskach innych niżadmin.
Problemy, które można zbadać za pomocą narzędzia AppVerifier
Element AppVerifier pomaga określić, kiedy aplikacja prawidłowo używa interfejsów API. Narzędzie może sprawdzić, czy w aplikacji występują następujące problemy:
- Niebezpieczne interfejsy API TerminateThread
- Nieprawidłowe użycie interfejsów API magazynu lokalnego wątku (TLS)
- Nieprawidłowe użycie manipulacji przestrzenią wirtualną (na przykład VirtualAlloc, MapViewOfFile)
- Aplikacja ukrywa naruszenia dostępu przy użyciu obsługi wyjątków strukturalnych
- Aplikacja próbuje użyć nieprawidłowych dojść
- Uszkodzenie pamięci lub problemy w stercie
- W aplikacji zabraknie pamięci w przypadku niskich zasobów
- Nieprawidłowe użycie sekcji krytycznych
- Aplikacja działająca w środowisku administracyjnym nie może działać w środowisku z ograniczonymi uprawnieniami
- Aplikacja uruchomiona jako ograniczony użytkownik może powodować potencjalne problemy
- Niezainicjowane zmienne w przyszłych wywołaniach funkcji w kontekście wątku
Testy, które można uruchomić za pomocą narzędzia AppVerifier
Element AppVerifier składa się z zestawów testów nazywanych "warstwami weryfikacji". Warstwy można włączać lub wyłączać dla każdej sprawdzanych aplikacji.
Aby wyświetlić określone testy, rozwiń warstwę weryfikacji w zestawie.
Aby włączyć test dla aplikacji, zaznacz pole wyboru testu.
To turn on all the tests in a verification layer, such as Basics, select the checkbox at the top level.
W poniższej tabeli wymieniono 13 typów testów, które może wykonać aplikacja AppVerifier, i zawiera linki do artykułów, aby uzyskać więcej informacji.
| Test type | Description | More information |
|---|---|---|
| Basics | At a minimum, you should run Application Verifier with the Basics setting selected. Każdy test podstawowy sprawdza obszar, który może powodować awarie lub inne negatywne scenariusze, które mają bezpośredni i znaczący wpływ na środowisko klienta. | Weryfikator aplikacji — testy w weryfikatorze aplikacji (podstawowe) |
| Compatibility | Testy warstwy weryfikacji zgodności pomagają zidentyfikować aplikację, która może mieć problemy z systemem operacyjnym Microsoft Windows. Wiele z tych testów może również służyć do testowania wymagań logo. | Weryfikator aplikacji — testy w weryfikatorze aplikacji (zgodność) |
| Cuzz | Warstwa weryfikacji współbieżności (Cuzz) wykrywa błędy współbieżności i warunki wyścigu danych. Cuzz dostosowuje planowanie wątków przez wstrzykiwanie losowych opóźnień w kluczowych punktach w kodzie aplikacji. | Weryfikator aplikacji — testy w weryfikatora aplikacji (Cuzz) |
| Symulacja niskich zasobów | Symulacja niskich zasobów próbuje zasymulować środowisko pod niskimi zasobami, takimi jak brak pamięci. Ta symulacja identyfikuje usterki występujące w warunkach małej ilości pamięci. This test is also referred to as Fault Injection. | Weryfikator aplikacji — testy w weryfikatorze aplikacji (symulacja niskiego poziomu zasobów) |
| LuaPriv | Ograniczone testy predyktora uprawnień konta użytkownika (LuaPriv) są zarówno predykcyjne, jak i diagnostyczne, i działają na temat problemów związanych z uruchamianiem aplikacji z uprawnieniami administracyjnymi. Testy pokazują również, czy aplikacja może działać, jeśli uruchamiasz aplikację z ograniczonymi uprawnieniami (ogólnie jako użytkownik ogólny). | Weryfikator aplikacji — testy w weryfikatorze aplikacji (LuaPriv) |
| Miscellaneous | Różne testy sprawdzają asortyment warunków, takich jak wykrywanie niebezpiecznych interfejsów API, które wykonują niebezpieczne akcje. | Weryfikator aplikacji — testy w weryfikatorze aplikacji (różne) |
| Networking | Testy sieciowe wyszukują nieprawidłowe użycie interfejsów API WinSock. Jeśli na przykład interfejs API sieci wywołuje wywołanie przed pomyślnym wywołaniem WSAStartup() metody lub po pomyślnym wywołaniu metody przez równoważenie WSACleanup() . |
Weryfikator aplikacji — testy w weryfikatorze aplikacji (sieć) |
| NTLM | Monitoruje użycie interfejsów AcquireCredentialsHandle API uwierzytelniania i InitializeSecurityContext wykrywa użycie protokołu NT LAN Manager (NTLM). NTLM to nieaktualny protokół uwierzytelniania z wadami, które potencjalnie zagrażają bezpieczeństwu aplikacji i systemu operacyjnego. |
Weryfikator aplikacji — testy w weryfikatorze aplikacji (NTLM) |
| Printing | Weryfikator wydruku pomaga znaleźć i rozwiązać problemy, które mogą powodować wywołanie podsystemu drukowania przez aplikację. Weryfikator wydruku jest przeznaczony dla dwóch warstw podsystemu drukowania, warstwy PrintAPI i warstwy PrintDriver. | Weryfikator aplikacji — testy w weryfikatorze aplikacji (drukowanie) |
| Webservices | Warstwa weryfikacji interfejsu API usług sieci Web systemu Windows (WWSAPI) sprawdza prawidłowe użycie interfejsu WWSAPI, takiego jak wywołanie WWSAPI, które odwołuje się do nieprawidłowego wewnętrznego obiektu WWSAPI lub wywołania WWSAPI z odwołaniami do już używanego obiektu jednowątkowego. | Weryfikator aplikacji — testy w weryfikatorze aplikacji (WebServices) |
| Services | Testy usług sprawdzają prawidłowe użycie usług systemu Windows. Na przykład test sprawdza, czy usługi są uruchamiane i zatrzymywane prawidłowo. | Weryfikator aplikacji — kody zatrzymania — usługi |
| Perf | Test wydajności sprawdza efektywne użycie interfejsów API, które wpływają na wydajność systemu i zużycie energii, takie jak wywoływanie funkcji systemu Windows, która używa niepoprawnego okresu oczekiwania. | Weryfikator aplikacji — kody zatrzymania — wydajności |
| Hangs | Test Zawiesza się sprawdza użycie interfejsów API, które powodują, że system przestanie odpowiadać. Na przykład gdy wątek DllMain oczekuje na inny wątek, który jest zablokowany. | Weryfikator aplikacji — kody zatrzymania — zawiesza się |
Jak działa program AppVerifier
Narzędzie AppVerifier działa przez zmodyfikowanie niezarządzanych tabel metod DLL, dzięki czemu wymagane kontrole są wykonywane przed wykonaniem rzeczywistej funkcji (takie podejście nosi również nazwę "Podłączanie funkcji"). Na przykład adres metody interfejsu API CreateFileA Win32 jest zastępowany wewnętrzną metodą AppVerifier, która wyzwala serię testów, które po pozytywach są rejestrowane.
Po rozpoczęciu nowych procesów następuje kontrola technik łączenia tabel metod AppVerifier z wpisami w określonych kluczach rejestru. Jeśli wpis rejestru istnieje, biblioteka DLL AppVerifier jest ładowana w nowo utworzonym procesie, który obsługuje zamiany tabeli metod w istniejących bibliotekach DLL i bibliotekach DLL załadowanych później. Ponieważ haki są wykonywane po załadowaniu biblioteki DLL, nie można użyć elementu AppVerifier w aktualnie uruchomionym procesie.
Interfejs użytkownika aplikacji AppVerifier służy do kontrolowania ustawień klucza rejestru i dostarczania informacji o istniejących dziennikach. After the application and tests are set within the UI and you select Save, the Registry settings are configured. Następnie uruchom ponownie aplikację, która inicjuje monitorowanie. Należy pamiętać, że ustawienia będą utrwalane do momentu usunięcia aplikacji z aplikacji AppVerifier.
When AppVerifier identifies a problem, a verifier stop occurs. Narzędzie udostępnia liczbę, która identyfikuje dokładny charakter i przyczynę zatrzymania wykonywania.
AppVerifier i cykl życia tworzenia oprogramowania
Dobrym rozwiązaniem jest użycie weryfikatora aplikacji w całym cyklu życia tworzenia oprogramowania. Oto kilka sugestii:
Requirements Phase: Plan to use AppVerifier to help determine app requirements. Przydziel czas uruchamiania narzędzia i wykonaj czynności opisane w zidentyfikowanych problemach.
Design Phase: Plan to use AppVerifier as you design your app. Zdefiniuj składniki (moduły, biblioteki DLL lub EXE) do przetestowania.
Implementation Phase: Run AppVerifier on stable builds (from Alpha to RTM) of the different components under development. Przetestuj składniki indywidualnie i zbiorczo.
Verification Phase: Test engineers should run all tests (both manual and automatic) with AppVerifier for the initial verification. Ta faza w cyklu jest pierwszym wypchnięciem aplikacji do limitów. Nieoczekiwane zachowanie i dane są często odnajdywane podczas początkowej weryfikacji. AppVerifier to również zaawansowane narzędzie dla konsultantów ds. zabezpieczeń prowadzących inspekcje (skrzynka i biała skrzynka). Narzędzie umożliwia szybkie wyliczanie rzeczywistych (lub potencjalnych) wektorów ataku/wykorzystania.
Release Phase: Clients and security consultants can use AppVerifier on the released binaries to identify potential security vulnerabilities.
Faza obsługi i obsługi: użyj elementu AppVerifier, aby zapewnić, że zmiany kodu, takie jak aktualizacje i dodatki Service Pack, nie powodują regresji.
Powiązane artykuły o aplikacji AppVerifier
Ta sekcja zawiera następujące elementy: