Sdílet prostřednictvím


nástroj Ověřovač aplikací

Application Verifier (AppVerifier) je nástroj pro ověření za běhu pro nespravovaný kód. Nástroj je užitečný při hledání problémů, které můžou být obtížné identifikovat pomocí standardních technik testování aplikací nebo testování ovladačů. AppVerifier může pomoct s vyhledáním drobných chyb programování, problémů se zabezpečením a omezenými problémy s oprávněními uživatelských účtů.

Přehled appVerifieru

Jedním z nejdůležitějších problémů programátorů, softwarových architektů, testerů a konzultantů pro zabezpečení je pochopení proměnných cest provádění aplikací při jejich nasazení do produkčního prostředí. I s přístupem ke zdrojovému kódu může být obtížné pochopit vše, co se může během provádění vyskytnout. Různé závislosti, jako je několik skupin přispívajících ke kódu nebo cvičení externích komponent, můžou zvýšit složitost řešení potíží.

AppVerifier (AppVerif.exe) is a dynamic verification tool for user-mode applications. Může detekovat chyby v libovolné aplikaci v uživatelském režimu, která není založena na spravovaném kódu, včetně ovladačů uživatelského režimu. Nástroj monitoruje akce aplikace při spuštění aplikace. Aplikace je předmětem různých stresů a testů a generuje zprávu o potenciálních chybách při provádění nebo návrhu aplikace.

Při použití v průběhu životního cyklu vývoje softwaru může AppVerifier přinést pro vývoj nákladové výhody. Usnadňuje identifikaci problémů v rané fázi, kdy jsou jednodušší a levnější je opravit. Nástroj také pomáhá rozpoznat chyby, které byly dříve nepovšimané. Zajišťuje, že konečnou aplikaci lze spustit v omezených prostředích (například v prostředí bez oprávnění správce).

Instalace a požadavky appVerifieru

AppVerifier je součástí sady Windows Software Development Kit (SDK). Pokud chcete nainstalovat nástroj Application Verifier, zaškrtněte políčko nástroje během instalace sady SDK.

Snímek obrazovky hlavní nabídky Application Verifier s jednou vybranou testovací aplikací a testy uvedenými na pravé straně

Pokud chcete používat AppVerifier, projděte si následující podmínky a požadavky:

  • AppVerifier můžete použít samostatně nebo s ladicím programem v uživatelském režimu.

  • Aktuální uživatel musí být členem skupiny Administrators v počítači.

  • AppVerifier nepodporuje ARM64EC.

Data, která můžete zkontrolovat pomocí AppVerifieru

AppVerifier je nástroj určený k detekci a ladění poškození paměti, kritických ohrožení zabezpečení a omezených problémů s oprávněními uživatelských účtů. AppVerifier pomáhá při vytváření spolehlivých a zabezpečených aplikací monitorováním interakce aplikace s operačním systémem Microsoft Windows. Profiluje použití objektů operačního systému, registru, systému souborů a rozhraní API Win32 (včetně hald, popisovačů a zámků). AppVerifier také obsahuje kontroly, které předpovídají, jak dobře může aplikace fungovat v prostředích, která nejsou správci.

Problémy, které můžete prozkoumat pomocí AppVerifieru

AppVerifier pomáhá určit, kdy aplikace správně používá rozhraní API. Nástroj může zkontrolovat následující problémy ve vaší aplikaci:

  • Nebezpečná rozhraní API TerminateThread
  • Nesprávné použití rozhraní TLS (Thread Local Storage) API
  • Nesprávné použití manipulace s virtuálními prostory (například VirtualAlloc, MapViewOfFile)
  • Aplikace skryje porušení přístupu pomocí strukturovaného zpracování výjimek.
  • Aplikace se pokusí použít neplatné popisovače
  • Poškození paměti nebo problémy v haldě
  • Aplikace v nedostatku prostředků vyčerpá paměť.
  • Nesprávné použití kritických oddílů
  • Aplikace spuštěná v prostředí pro správu nemůže běžet v prostředí s omezenými oprávněními.
  • Aplikace spuštěná jako omezený uživatel může způsobit potenciální problémy
  • Neinicializované proměnné v budoucích voláních funkce v kontextu vlákna

Testy, které můžete spustit pomocí AppVerifieru

AppVerifier se skládá ze sad testů označovaných jako "ověřovací vrstvy". Vrstvy je možné zapnout nebo vypnout pro každou aplikaci, kterou zkontrolujete.

  • Pokud chcete zobrazit konkrétní testy, rozbalte ověřovací vrstvu v rámci sady.

  • Pokud chcete pro aplikaci zapnout test, zaškrtněte políčko testu.

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

Následující tabulka uvádí 13 testovacích typů, které může AppVerifier provádět, a obsahuje odkazy na články s dalšími informacemi.

Test type Description More information
Basics At a minimum, you should run Application Verifier with the Basics setting selected. Každý základní test zkontroluje oblast, která může způsobit chybové ukončení nebo jiné negativní scénáře, které mají přímý a významný vliv na prostředí zákazníka. Ověřitel aplikací – testy v rámci ověřovatele aplikace (základy)
Compatibility Testy vrstvy ověření kompatibility pomáhají identifikovat aplikaci, která může mít problémy s operačním systémem Microsoft Windows. Mnohé z těchto kontrol se dají použít také k testování požadavků na logo. Ověřovatel aplikací – testy v rámci ověřovatele aplikace (kompatibilita)
Cuzz Vrstva ověřování Concurrency Fuzzing (Cuzz) detekuje chyby souběžnosti a podmínky časování dat. Cuzz upraví plánování vláken vložením náhodných zpoždění v klíčových bodech kódu aplikace. Ověřovatel aplikací – testy v rámci ověřovatele aplikace (Cuzz)
Simulace nízkého využití prostředků Simulace nízkých prostředků se pokouší simulovat prostředí s nízkými prostředky, jako je nedostatek paměti. Tato simulace identifikuje chyby, ke kterým dochází v podmínkách nedostatku paměti. This test is also referred to as Fault Injection. Ověřovatel aplikací – testy v rámci ověřovatele aplikace (simulace s nízkými prostředky)
LuaPriv Testy s omezenými prediktorem oprávnění uživatelských účtů (LuaPriv) jsou prediktivní i diagnostické a pracují na problémech souvisejících se spuštěním aplikace s oprávněním správce. Testy také odhalí, jestli aplikace může fungovat, pokud spustíte aplikaci s omezenými oprávněními (obecně jako obecný uživatel). Ověřovatel aplikací – testy v rámci ověřovatele aplikace (LuaPriv)
Miscellaneous Různé testy kontrolují řadu podmínek, například zjišťování nebezpečných rozhraní API, která provádějí nebezpečné akce. Ověřovatel aplikací – testy v rámci ověřovatele aplikace (Různé)
Networking Testy sítí hledají nesprávné použití rozhraní API WinSock. Například pokud síťové rozhraní API volá před úspěšným voláním WSAStartup() metody nebo po vyvažování úspěšného volání WSACleanup() metody. Ověřovatel aplikací – testy v rámci ověřovatele aplikací (sítě)
NTLM Monitoruje použití ověřovacích rozhraní API AcquireCredentialsHandle a InitializeSecurityContext zjišťuje použití protokolu NT LAN Manager (NTLM). NTLM je zastaralý ověřovací protokol s vadami, které potenciálně ohrozit zabezpečení aplikací a operačního systému. Ověřovatel aplikací – testy v rámci ověřovatele aplikace (NTLM)
Printing Nástroj Print Verifier pomáhá najít a vyřešit problémy, které můžou vést k tomu, že aplikace volá subsystém tisku. Nástroj Print Verifier cílí na dvě vrstvy subsystému tisku, vrstvu PrintAPI a vrstvu PrintDriver. Ověřovatel aplikací – testy v rámci ověřovatele aplikace (tisk)
Webservices Ověřovací vrstva rozhraní WWSAPI (Windows WebServices API) kontroluje správné použití rozhraní WWSAPI, například volání WWSAPI, které odkazuje na neplatný vnitřní objekt WWSAPI, nebo volání WWSAPI s odkazy na objekt s jedním vláknem, který se už používá. Ověřovatel aplikací – testy v rámci ověřovatele aplikace (WebServices)
Services Testy služeb kontrolují správné použití služeb systému Windows. Test například ověří, jestli se služby spouští a zastavují správně. Ověřovatel aplikací – Kódy zastavení – Služby
Perf Test Perf kontroluje efektivní použití rozhraní API, která ovlivňují výkon systému a spotřebu energie, například volání funkce Systému Windows, která používá nesprávnou dobu čekání. Ověřovatel aplikací – Kódy stop – Výkon
Hangs Test hangs kontroluje použití rozhraní API, která způsobují, že systém přestane reagovat. Například když vlákno DllMain čeká na jiné vlákno, které je blokováno. Ověřovatel aplikací – Kódy zastavení – Zablokování

Jak appVerifier funguje

AppVerifier funguje úpravou nespravovaných tabulek metod DLL tak, aby se požadované kontroly prováděly před spuštěním skutečné funkce (tento přístup se označuje také jako "Zahočení funkce"). Například adresa metody rozhraní API CreateFileA Win32 je nahrazena interní metodou AppVerifier, která aktivuje řadu testů, které jsou při pozitivním protokolování zaznamenány.

Když se spustí nové procesy, řízení metod Připojení tabulek metod AppVerifier se provádí s položkami v konkrétních klíčích registru. Pokud položka registru existuje, knihovna DLL AppVerifier se načte do nově vytvořeného procesu, který zpracovává nahrazení tabulek metod v existujících knihovnách DLL a knihovnách DLL načtených později. Vzhledem k tomu, že při načtení knihovny DLL jsou háky provedeny, není možné použít AppVerifier v aktuálně spuštěném procesu.

Uživatelské rozhraní AppVerifier slouží k řízení nastavení klíče registru a poskytnutí informací o existujících protokolech. After the application and tests are set within the UI and you select Save, the Registry settings are configured. Potom restartujte aplikaci, která zahájí monitorování. Mějte na paměti, že nastavení se zachová, dokud se aplikace neodebere z AppVerifieru.

When AppVerifier identifies a problem, a verifier stop occurs. Nástroj poskytuje číslo, které identifikuje přesnou povahu a důvod zastavení provádění.

AppVerifier a životní cyklus vývoje softwaru

V průběhu životního cyklu vývoje softwaru je vhodné používat nástroj Application Verifier. Tady jsou některé návrhy:

  • Requirements Phase: Plan to use AppVerifier to help determine app requirements. Přidělte čas pro spuštění nástroje a sledujte zjištěné problémy.

  • Design Phase: Plan to use AppVerifier as you design your app. Definujte, které komponenty (moduly, knihovny DLL nebo EXEs) se mají testovat.

  • Implementation Phase: Run AppVerifier on stable builds (from Alpha to RTM) of the different components under development. Jednotlivé a souhrnně otestujte komponenty.

  • Verification Phase: Test engineers should run all tests (both manual and automatic) with AppVerifier for the initial verification. Tato fáze cyklu je první, kdy se aplikace odešle do limitů. Během počátečního ověření se běžně zjišťuje neočekávané chování a data. AppVerifier je také výkonný nástroj pro konzultanty pro zabezpečení, kteří spouští audity (černá skříňka a bílá skříňka). Nástroj umožňuje rychlý výčet skutečných (nebo potenciálních) vektorů útoku nebo zneužití.

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

  • Fáze podpory a údržby: Použijte AppVerifier k zajištění změn kódu, jako jsou aktualizace a aktualizace Service Pack, nepřivádějí regrese.

Tato část obsahuje: