有没有办法检测密钥记录软件?

时间:2011-05-17 15:44:21

标签: keylogger malware-detection

我可能会编写一个程序来检测作为密钥记录的恶意(或非恶意)软件(记录关键笔划以获取信息)。

  1. 会使用什么策略?
    • 是否需要查找某些代码?
    • 我应该搜索某些地点吗?
  2. 我更喜欢Java或Perl,因为我精通这些语言
    • 这些语言会起作用吗?
    • 这种情况下是否有更好的语言?
  3. 会用什么?
    • 码?
    • 算法?
    • 功能

2 个答案:

答案 0 :(得分:3)

我认为这取决于你想要做什么。如果您正在寻找已知的键盘记录程序,您可以使用任何可以搜索文件系统的软件来查看文件签名。但是,听起来你想要检测未知程序。我不相信这是严格可能的。键盘记录应用程序可以被动地监听击键,因此没有可以查找的活动签名。理解应该在您的计算机上运行的软件然后检测任何开始运行的新软件可能会更容易。它不一定是击键记录软件,但它将是未经授权的软件(或至少尚未成为授权软件)。

击键作为您可以在应用程序中订阅的事件广播到系统。这就是游戏和其他程序使用键盘输入的方式。整个系统知道密钥何时被击中以及密钥是什么。你无法知道谁在听。

换句话说,如果可行的话,它会杀死软件击键记录程序,因为每个反病毒和反间谍软件应用程序都可以选择检测并删除所有这些类型的软件。它们有类似的选项,但它基于已知击键记录器的已知签名。

答案 1 :(得分:2)

作为一个程序试图计算它的输入是否被记录,对于写得不好的密钥记录器,你可以寻找一些时间模式,比如记录器循环缓冲区时的周期性延迟,但通常是键盘记录器非常精心编写,并将自己注入驱动链,因此将从正常链中难以辨认。

在这种情况下,检测键盘记录器的唯一希望是检查驱动程序链,寻找非标准驱动程序(但一些键盘记录器可以感染标准驱动程序),这在Windows领域并不是特别容易(如此低等级检查)。

需要插入防病毒/反恶意软件挂钩才能真正访问驱动程序链定义,而不是正在执行的实际代码,以检测是否正在进行某些密钥记录,以及这很难,充满官僚作风,除了C / C ++之外几乎无法撤销