我可能会编写一个程序来检测恶意(或非恶意)软件,即按键记录(记录按键以获取信息)。
- 会使用什么战术?
- 是否有特定的代码要查找?
- 我应该搜索某些位置吗?
- 我更喜欢 Java 或 Perl,因为我精通这些语言
- 这些语言会起作用吗?
- 有没有更好的语言可以用于这种情况?
- 会用什么?
- 代码?
- 算法?
- 功能?
我可能会编写一个程序来检测恶意(或非恶意)软件,即按键记录(记录按键以获取信息)。
我认为这取决于你想要做什么。如果您正在寻找已知的键盘记录程序,您可以使用任何可以搜索文件系统的软件来查看文件签名。但是,听起来您想检测未知程序。我不相信这是绝对可能的。键盘记录应用程序可以被动地侦听击键,因此没有您可以寻找的主动签名。了解应该在您的计算机上运行的软件然后检测任何开始运行的新软件可能会更容易。它不一定是击键记录软件,但它可能是未经授权的软件(或至少尚未成为授权软件)。
击键作为事件广播到系统,您可以在应用程序中订阅这些事件。这就是游戏和其他程序使用键盘输入的方式。整个系统都知道何时按下键以及它是哪个键。你不知道谁在听。
换句话说,如果可能的话,它将杀死软件击键记录器,因为每个防病毒和反间谍软件应用程序都可以选择检测和删除所有这些类型的软件。他们有一个与此类似的选项,但它基于已知击键记录器的已知签名。
作为一个试图确定它的输入是否被按键记录的程序,对于写得不好的按键记录器,您可以寻找一些时间模式,例如记录器回收缓冲区时的周期性延迟,但通常按键记录器非常好 -写入并将自己注入到驱动程序链中,因此与正常链无法区分。
在这种情况下,检测键盘记录器的唯一希望是检查驱动程序链以寻找非标准驱动程序(但一些键盘记录器可以感染标准驱动程序),这在 Windows 领域并不特别容易(这样的低级检查) .
需要插入防病毒/反恶意软件挂钩才能真正访问不仅是驱动程序链定义,而且是正在执行的真实代码,以检测是否发生了某些键记录,这很难,充满官僚作风,除了 C/C++ 之外几乎无法使用