Udostępnij za pośrednictwem


Jak: wyłączanie Diagnostyka grafiki w aplikacji użytkownika

Można zapobiec inspekcji aplikacji użytkownika przez program Graphics Diagnostics i inne narzędzia Profiling Tools, aby zapobiec wykorzystaniu przez złośliwego użytkownika.

Używając pomocą programu Visual Studio Graphics Diagnostics podczas tworzenia aplikacji, można przechwycić informacje szczegółowe i analizować je, tak aby poprawić aplikację przed opublikowaniem.Jednak jeśli nie uniemożliwisz programowi Graphics Diagnostics przechwycenia tych informacji przed opublikowaniem aplikacji, złośliwy użytkownik może używać tych narzędzi, aby wyodrębnić obiekty artystyczne, kod cieniowań i inne informacje, po czym użyć ich do wykorzystania aplikacji.Na przykład złośliwy użytkownik może zmodyfikować obiekty artystyczne i kod cieniowań w celu uzyskania nieuczciwej przewagi w grze online.

Obsługa platformy i zestawu SDK

W zestawie Windows SDK dla systemu Windows 8 obsługa programu Direct3D 10 obejmuje dodatkowe flagi tworzenia urządzeń.W szczególności obejmuje wyliczenie D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY używane do zapobiegania sczepianiu z aplikacją narzędzi do profilowania grafiki, takich jak Graphics Diagnostics.Aplikacje odwołujące się do plików nagłówków programu Direct3D zawarte w zestawie Windows SDK dla systemu Windows 8 mogą używać tych nowych flag, ale aplikacje, które odwołują się pliki nagłówków programu Direct3D w zestawie SDK programu DirectX z czerwca 2010 r. nie mogą.Dotyczy to aplikacji, które są uruchamiane na Windows 8 oraz Windows 7.

W programie Direct3D 11.1 można użyć metody ID3DUserDefinedAnnotation::GetStatus, aby uniemożliwić narzędziom profilowania grafiki przechwytywanie informacji o aplikacji.Ponieważ ten interfejs nie jest dostępny w systemie Windows 7 nawet przy odwoływaniu się do zestawu Windows SDK dla systemu Windows 8, dotyczy to tylko aplikacji uruchamianych w systemie Windows 8.

Dla aplikacji, które nie odwołują się do zaktualizowanych nagłówków programu Direct3D w zestawie Windows SDK dla systemu Windows 8, można zapobiec przechwytywaniu informacji przez narzędzia do profilowania grafiki przez kompilowanie aplikacji dla programu Direct3D 9Ex i używanie interfejsu API D3DPerf_SetOptions.

Program Direct3D 11.1 oferuje dwa sposoby zapobiegania dołączaniu się do aplikacji narzędzi do profilowania grafiki, takich jak Graphics Diagnostics.Pierwsza technika polega na użyciu ID3DUserDefinedAnnotation::GetStatus w celu wykrycia, czy aplikacja jest obserwowana przez narzędzie profilowania i jeśli jest, należy ją natychmiast zamknąć.Użyj tej techniki do wykonywania akcji przed zamknięciem aplikacji.Druga technika polega na ustawieniu odpowiedniej flagi podczas tworzenia urządzenia Direct3D.

Aby zapobiec profilowaniu grafiki przy użyciu interfejsu Direct3D 11 i zestawu Windows SDK dla systemu Windows 8

  • W kodzie źródłowym aplikacji, przed wrażliwymi wywołaniami programu Direct3D, wywołaj metodę ID3DUserDefinedAnnotation::GetStatus i zapisz kod powodujący niezwłoczne zamknięcie aplikacji, jeśli zwracana jest wartość niezerowa.

    - lub -

    Podczas tworzenia urządzenia używającego programu Direct3D 11 w kodzie źródłowym aplikacji ustaw przekazywanie flagi D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY.Informacje o sposobie tworzenia urządzenia Direct3D 11 — zobacz D3D11CreateDevice i D3D11CreateDeviceAndSwapChain.Aby uzyskać informacje o fladze D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY flagi, zobacz Wyliczenie D3D11_CREATE_DEVICE_FLAG.

Program Direct3D 10 oferuje technikę przypominającą drugą technikę programu Direct3D 11, gdy odwołujesz się do zestawu Windows SDK dla plików nagłówków systemu Windows 8.

Aby zapobiec profilowaniu grafiki przy użyciu programu Direct3D 10 i zestawu Windows SDK dla systemu Windows 8

  • Podczas tworzenia urządzenia używającego programu Direct3D 10 w kodzie źródłowym aplikacji ustaw przekazywanie flagi D3D10_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY.Aby uzyskać informacje o sposobie tworzenia urządzenia Direct3D 10 lub urządzenia Direct3D 10.1, zobacz Podstawowe funkcje programu Direct3D 10.Aby uzyskać informacje o fladze D3D10_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY flagi, zobacz Wyliczenie D3D10_CREATE_DEVICE_FLAG.

Można też uniemożliwić graficznym narzędziom Profiling Tools, takim jak Graphics Diagnostics, podczepianie aplikacji użytkownika przy użyciu zestawu SDK programu DirectX z czerwca 2010 r. zamiast programu Windows SDK dla systemu Windows 8.

Aby zapobiec profilowaniu grafiki przy użyciu zestawu SDK programu DirectX z czerwca 2010 r.

  1. Skonfiguruj aplikację, aby skompilować ją dla plików nagłówków programu DirectX 9Ex.

  2. Przed utworzeniem urządzenia Direct3D w kodzie źródłowym aplikacji wywołaj interfejs API D3DPERF_SetOptions i użyj parametru o wartości 1.Aby uzyskać więcej informacji, zobacz dokumentację zestawu SDK programu DirectX z czerwca 2010 r.