Question

How can I create a window which is fully apparent to the user but is not visible in screenshots. I know that this is possible since Neo SafeKeys (an onscreen keyboard to defeat keyloggers) does not appear in the screenshots taken by keylogging software I installed.

To give you an idea, the window is fully visible to the user, however when a screenshot is taken, the Neo SafeKeys window does not appear at all (as if it does not even exist).

Neo SafeKeys states that it uses an invisible protection layer above the window to protect against screenshots. I have searched all over the internet to see how can I reproduce this, to no avail. Does anybody know how this can be performed (windows which is visible to user but invisible in screenshots)?

Was it helpful?

Solution

What you can do is you can prevent the PrtScn key from doing anything when pressed. Take a look at this article while shows you how to do this.

What this article is doing is clearing out the clipboard. What you can do instead is capture the screen image and digitally remove your application, then put the revised image on the clipboard, thus giving the "Effect" of making your window transparent.

Also, you might want to look at this SO question which gives an alternative way to make your window just appear "blue", though its not easy to do.

OTHER TIPS

Does anybody know how this can be performed (windows which is visible to user but invisible in screenshots)?

Use DirectX to render directly to the device.

In your C# application you can set up a global hook to monitor keyboard events. Then your application becomes the global handler for print screens. Now if another application managed screen prints natively, can't stop that, but anything running through windows, you can get at.

The WM_KEYBOARD_LL hook is one of the few global hooks that can be used in managed code because it doesn't require a DLL to be injected into every target.

For some code you can visit here:

Adam's Blog

Keep in mind that these are global hooks so you want to make sure nothing else (other applications) are effected. I've used these in the past as we hosted showing a power point in an application we worked on. Basically we didn't want the user to invoke any powerpoint menus or keyboard short cuts so we used a global hook. We always checked to see whether the users was in a certain area (screen) and in our application, otherwise we would effect other applications functionality (including our own!)

Microsoft Information:

Hooks Overview

There's this..... visual cryptography

live example here

But this could be easily coded against by taking multiple screenshots and laying them overeachother and such...

If you are using Windows, and you can avoid that screenlogging happens, you can implement a nice solution like a virtual desktop to embed your process into it. When a process is running inside a virtual desktop it is possible to bypass an screenlogger tool that runs over win32 Api.

Check out this article so you can sneak a peek how to implement a nice solution to scape from screen and keyboard monitoring.

http://www.codeproject.com/Articles/7392/Lock-Windows-Desktop?fid=62485&select=3139662&fr=101#xx0xx

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top