用于保存按下的键的动态缓冲区 - c ++

时间:2017-04-21 04:33:23

标签: c++ buffer keylogger

我正在为公司构建安全实施,需要捕获在特定窗口中按下的所有键并将它们保存在缓冲区中,以便每隔5分钟将它们转储到一个文件中。

然后,每隔7分钟通过邮件发送日志并删除该文件。这样做是一个不错的选择吗?有更好的选择吗?

缓冲区用于防止在擦除文件时使用该文件。

提出给我的问题是,我应该为此目的使用什么样的缓冲区?它必须是动态的,因为我不知道在保存文件之前将按下多少个键。

或者有没有办法在每次充满文件时将静态缓冲区转储到文件中?

1 个答案:

答案 0 :(得分:1)

简单std::vector可以用于此目的,因为它会自动增长,其增长策略可以很好地处理您的场景。您也可以使用std::list,但将矢量保存到文件可能会更容易。 对于每个按键,我都会存储一些结构来保存关于按键事件的信息。如果yoy在Windows上,那么简单地存储你处理的每个keyboard message的lParam和wParam可能是有意义的。您需要wParam来存储每个键附带的额外信息,例如按下键时的Ctrl + Alt。 例如:

#include <windows.h>

struct keypress
{
    UINT lParam; // The character code of the key. 
    UINT wParam; // The repeat count, scan code, extended-key flag etc.
};
typedef std::vector<keypress> keystore;

你也可以使用字符串,但它不是,这里需要字符串。如果只是简单的文本输入,即使使用简单的typedef std::vector<char> keystore;

,也可能没问题