C# - 击败键盘记录器的透明窗口

时间:2013-04-10 19:54:41

标签: c# window transparent keylogger

如何创建一个对用户完全明显但在屏幕截图中不可见的窗口。我知道这是可能的,因为Neo SafeKeys(用于击败键盘记录器的屏幕键盘)没有出现在我安装的键盘记录软件的截图中。

为了给你一个想法,窗口对用户完全可见,但是当拍摄截图时,Neo SafeKeys窗口根本不会出现(好像它根本不存在)。

Neo SafeKeys声称它在窗口上方使用了一个隐形保护层来防止屏幕截图。我已经在互联网上搜索过,看看我怎样才能重现这一点,但无济于事。有没有人知道如何执行此操作(用户可以看到但在屏幕截图中看不见的窗口)?

5 个答案:

答案 0 :(得分:4)

您可以做的是在按下时可以阻止PrtScn键执行任何操作。看看this article,同时向您展示如何执行此操作。

本文正在做的是清理剪贴板。您可以做的是捕获屏幕图像并以数字方式删除您的应用程序,然后将修改后的图像放在剪贴板上,从而提供使窗口透明的“效果”。

另外,您可能需要查看this SO question,这样可以让您的窗口显示为“蓝色”,但这并不容易。

答案 1 :(得分:4)

  

有人知道如何执行此操作(用户可见但在屏幕截图中不可见的窗口)?

使用DirectX直接渲染设备。

答案 2 :(得分:1)

在C#应用程序中,您可以设置全局挂钩来监视键盘事件。然后您的应用程序成为打印屏幕的全局处理程序。现在,如果另一个应用程序管理屏幕本地打印,无法阻止,但任何通过Windows运行,你可以得到。

WM_KEYBOARD_LL挂钩是可以在托管代码中使用的少数全局挂钩之一,因为它不需要将DLL注入到每个目标中。

对于某些代码,您可以访问:

Adam's Blog

请记住,这些是全局挂钩,因此您需要确保其他任何内容(其他应用程序)不受影响。我在过去使用过这些,因为我们在我们工作的应用程序中显示了一个功能点。基本上我们不希望用户调用任何powerpoint菜单或键盘快捷键,因此我们使用了全局钩子。我们总是检查用户是否在某个区域(屏幕)和我们的应用程序中,否则我们会影响其他应用程序功能(包括我们自己的!)

Microsoft信息:

Hooks Overview

答案 3 :(得分:1)

有这个...... visual cryptography

直播示例here

但是这可以很容易地通过拍摄多个屏幕截图并将它们放在另外等等来编码......

答案 4 :(得分:0)

如果您使用的是Windows,并且可以避免发生屏幕日志,您可以实施一个很好的解决方案,如虚拟桌面,将您的流程嵌入其中。当进程在虚拟桌面内运行时,可以绕过在win32 Api上运行的screenlogger工具。

查看这篇文章,这样你就可以偷看如何从屏幕和键盘监控中实现一个很好的解决方案。

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