Например, есть функция безопасной очистки памяти SecureZeroMemory. После того, как секретные данные побывали в памяти и более стали не нужны, их удаляют. Но обычный вызов ZeroMemory может быть при компиляции оптимизирован и выброшен полностью. В следующем примере компилятор при оптимизации выбросил бы вызов ZeroMemory из-за того, что переменная szPassword выходит из области видимости и далее не используется.
{ WCHAR szPassword[MAX_PATH]; // Retrieve the password if (GetPasswordFromUser(szPassword, MAX_PATH)) UsePassword(szPassword); // Clear the password from memory SecureZeroMemory(szPassword, sizeof(szPassword)); }
Еще можно усложнить захват картинки с экрана. Для этого в Windows 7 существует функция SetWindowDisplayAffinity. Достаточно добавить следующий код в вашу программу:
SetWindowDisplayAffinity(hwnd, WDA_MONITOR); ShowWindow(hwnd, nShowCmd);Теперь, если Desktop Window Manager не отключен, при попытке сделать скриншот злоумышленник увидит черные пикселы вместо окна программы.
Эти примитивные шаги всего лишь усложняют работу злоумышленника по вытаскиванию конфиденциальных данных, но, конечно, не решают проблему безопасности.