Skip to content

k4yt3x/Evanesco

Repository files navigation

👁️‍🗨️ Evanesco

Hide any window from screen capture on Windows.

demo.mp4

Description

This lightweight utility allows you to easily hide any window on your system from screenshots, screen recording, screen sharing, malware, anti-cheat, and other tools. Here are some examples:

  • OBS Studio
  • Snipping Tool (Win+Shift+S)
  • Microsoft Teams
  • Discord
  • Zoom

In case you're wondering, the name "Evanesco" means "disappear" in Latin. I wanted to use a more descriptive name, but I just couldn't resist using the chant of the invisibility spell from Baldur's Gate 3. While the third-person, singular, present, imperative form "Evanesce" is technically more grammatically correct, I'm leaving it as "Evanesco" as it is more interesting to align with the chant of the spell.

Usage

Tip

  • You may want to run Evanesco with administrator privileges so you can hide other windows that are running with administrator privileges.
  • You can easily test if a target window has been hidden by previewing a screenshot with Windows' built-in Snipping Tool (Ctrl+Shift+S).
  • You can hide explorer.exe to hide the taskbar and the desktop.
  • You can use Ctrl+A to select all windows or processes in the tables.
  1. Download and install Evanesco. You can either:
    • use the installer (named EvanescoUserSetup-*-x64.exe) to install Evanesco onto your system, or
    • use the portable version (named Evanesco-*-x64.zip) to run Evanesco without installation.
  2. Double-click the Evanesco.exe file or the desktop icon to launch the GUI application.
  3. Click to select the windows or processes owning the windows you want to hide. You can press and hold Shift to select multiple continuous processes or press and hold Ctrl to select multiple individual processes.
  4. Press the Hide button to hide the windows or the Unhide button to unhide the windows.

You can also use Evanesco from the command line:

Hide windows from screen capture and recording.

Usage:
    evanesco [hide|unhide] --process <processId>
    evanesco [hide|unhide] --window <windowHandle>
    evanesco (Without arguments to launch the GUI)

Examples:
    evanesco hide --process 1234
    evanesco unhide --window 12AB34

How It Works

TL;DR: DLL injection + SetWindowDisplayAffinity.

Windows provides the SetWindowDisplayAffinity function to allow applications to specify where the content of their windows can be displayed. Calling this function with the handle of the window we want to hide from screen captures and the display affinity set to WDA_EXCLUDEFROMCAPTURE will cause the window to be transparent and invisible to screen capture software.

However, there is a security restriction where the SetWindowDisplayAffinity function can only be called by the process that owns the window, which means we cannot simply write an application that enumerates all windows and calls SetWindowDisplayAffinity to hide the windows. The call originate from the process that owns those windows.

Evanesco bypasses this restriction by injecting a DLL into the target process that owns the window we want to hide. The injected DLL then calls the SetWindowDisplayAffinity function from within that process. While the first version of Evanesco (1.0.0) used shellcode injection, later versions switched to DLL injection to provide additional functionalities.

License

This project is licensed under GNU GPL version 3.
Copyright (C) 2025 K4YT3X.

AGPLv3

About

Hide any window from screen capture on Windows.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages