有没有一种方法可以检测键盘记录软件?

7

我可能会编写一个程序来检测恶意(或非恶意)软件,这些软件记录键盘输入以获取信息。

  1. 使用了哪些策略?
    • 有特定的代码需要查找吗?
    • 有特定的位置应该搜索吗?
  2. 我更喜欢Java或Perl,因为我能流利地使用这些语言。
    • 这些语言可以用吗?
    • 在这种情况下,是否有更好的语言可供使用?
  3. 将使用什么?
    • 代码?
    • 算法?
    • 函数?
2个回答

4
我认为这取决于你想做什么。如果你在寻找已知的键盘记录程序,你可以使用任何能够搜索文件系统以查看文件签名的软件。然而,听起来你想检测未知程序。我不认为这是严格可能的。键盘记录应用程序可以被动地监听按键,因此没有活动的签名可以查找。可能更容易理解应该在计算机上运行的软件,然后检测开始运行的任何新软件。它不一定是键盘记录软件,但它会是未经授权的软件(或至少尚未经过授权的软件)。
按键作为事件广播到系统中,你可以在你的应用程序中订阅它们。这就是游戏和其他程序使用键盘输入的方式。整个系统都知道何时按下键以及按下的是哪个键。你无法知道谁在监听。
换句话说,如果这是可能的,那么它将杀死软件键盘记录器,因为每个反病毒和反间谍软件应用程序都会有一个选项来检测和删除所有这些类型的软件。他们有一个类似于此的选项,但它是基于已知键盘记录器的已知签名。

2
作为一个程序,只是试图确定它的输入是否被键盘记录器记录下来,对于糟糕编写的键盘记录器,您可以寻找一些时间模式,例如循环缓冲时的周期性延迟,但通常键盘记录器都是编写得非常好的,并且将自己注入驱动程序链中,因此与正常链无法区分。
在这种情况下,检测键盘记录器的唯一希望是检查驱动程序链,寻找非标准驱动程序(但某些键盘记录器可能会感染标准驱动程序),这在Windows领域并不特别容易(这种低级别的检查)。
需要插入防病毒/反恶意软件钩子才能真正访问不仅驱动程序链定义,而且正在执行的实际代码,以检测是否正在进行某些键盘记录,这很困难,充满官僚主义,而且几乎只能用C/C++完成。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接