【问题标题】:C# - Transparent Window to defeat KeyloggersC# - 击败键盘记录器的透明窗口
【发布时间】:2013-04-10 19:54:41
【问题描述】:

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

为了让您了解,用户可以完全看到该窗口,但是当截取屏幕截图时,Neo SafeKeys 窗口根本不会出现(就好像它根本不存在一样)。

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

【问题讨论】:

  • 我只是一个猜测,但也许你必须在它之前捕捉屏幕截图事件并消失窗口?
  • 这可以用 C# 完成吗?还是需要像 C 这样的低级编程?
  • 您可以通过互操作间接使用C#。
  • @DenysDenysenko 如果尚未发生捕获屏幕截图事件,您如何在窗口消失之前消失?
  • 我很伤心,这只是一个猜测。您可以像处理 WinAPI 一样处理相同的事件,如果有的话,您可以使用它。

标签: c# window transparent keylogger


【解决方案1】:

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

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

另外,您可能想查看this SO question,它提供了另一种让您的窗口显示为“蓝色”的方法,尽管这并不容易。

【讨论】:

  • 感谢您的回复。但是,如果键盘记录器使用其他屏幕捕获软件而不是通常的打印屏幕会发生什么?
  • @Matthew - 根本没有办法 100% 防止这种情况发生。即使您找到了解决方案,总有人可以用数码相机为他们的显示器拍照
  • 感谢您的回答。我完全了解数码相机的问题。但是,我只关注键盘记录程序在个人计算机上截屏。
  • 顺便谢谢你的链接:)
  • @Matthew - 另一种解决方案,虽然不优雅且不推荐,但可能是设置一个计时器,每 500 毫秒或其他时间清除剪贴板。
【解决方案2】:

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

使用 DirectX 直接渲染到设备。

【讨论】:

  • 你知道任何有用的指南可能会派上用场吗?
  • 您要构建什么样的应用程序?在 DirectX 中绘制屏幕键盘相对简单,但如果您尝试使用 WinForms 控件(编辑框、下拉菜单等)构建看起来像普通 Windows 应用程序的东西,则可能会难以获得您想要的东西。
  • 我想创建一个在网站上显示的屏幕键盘。它显然应该由一系列按钮组成。我不认为我会添加下拉框之类的。然而,最重要的是它对屏幕截图是透明的。
  • 你看,这个应用程序旨在击败屏幕截图键盘记录程序。因此,如果应用程序对用户可见但在屏幕截图中完全不可见,那将是可取的。我知道这是可能的,因为 Neo SafeKeys 做到了。
  • 那时我肯定会坚持使用 DirectX。键盘和按钮的 2D 绘图很简单。请注意,键盘记录程序不需要使用 PrtScrn 按键或剪贴板来抓取屏幕。甚至视频内存也没有限制,但这只是另一个障碍。附带考虑的是,如果您在网站上执行此操作,则需要制作一个插件以在远程计算机上部署其中的任何一个。有很多像 Unity3d 这样的插件可以渲染你的键盘。
【解决方案3】:

在您的 C# 应用程序中,您可以设置一个全局挂钩来监控键盘事件。然后您的应用程序将成为打印屏幕的全局处理程序。现在,如果另一个应用程序管理的屏幕在本机打印,则无法停止,但任何通过 windows 运行的东西,您都可以处理。

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

一些代码你可以在这里访问:

Adam's Blog

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

微软信息:

Hooks Overview

【讨论】:

  • 感谢您的回复
【解决方案4】:

有这个..... visual cryptography

现场示例here

但是这可以很容易地通过截取多个屏幕截图并将它们放在一起等等......

【讨论】:

    【解决方案5】:

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

    查看这篇文章,了解如何实现一个不错的解决方案来摆脱屏幕和键盘监控。

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

    【讨论】:

    • 您可能应该在此答案中总结更多链接。
    • 是的,你说得对,这个示例基于虚拟桌面的概念,这种简单的技术具有提供隔离环境的魔力,在该环境中,任何通过 WIN32 Api 工作的键盘记录器或屏幕记录器都将被阻止并获胜没有按预期工作。当进程运行到虚拟桌面时,您可以针对典型的恶意软件实现某种安全性,但是如果该恶意软件在内核中运行,例如 Elite Keylogger,会发生什么情况?好的,该解决方案不起作用,您需要构建一个驱动程序来加密击键消息,然后键盘记录器才能捕获任何干净的消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多