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

标签 c++ buffer keylogger

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

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

缓冲区是为了防止删除文件时使用该文件。

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

或者有什么方法可以在每次文件变满时将静态缓冲区转储到文件中吗?

最佳答案

简单 std::vector为此目的没问题,因为它会自动增长并且其增长策略可以很好地处理您的情况。您也可以使用 std::list但将 vector 保存到文件中可能更容易。 对于每个按键,我都会存储一些结构来保存有关按键事件的信息。如果 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; 这样简单的东西,您也可能没问题。

关于c++ - 用于保存按下的键的动态缓冲区 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43534028/

相关文章:

c++ - 如何仅使用函数访问私有(private)变量

c++ - 如何防止 Gnome 在执行 alt-tab 时显示两个窗口? (C++ qt 应用程序)

javascript - WebGL:绘制点失败:glDrawArrays: "attempt to access out of range vertices in attribute 1"

java - 我如何编写一个按键监听器来跟踪 Java 中的所有击键?

node.js - 是否可以使用 Node.js 制作键盘记录器?

c++ - 如何通知一个小部件有关 Qt 中另一个小部件的更改?

c# - C 指针结构 - buffer 指向另一个结构。如何在 C# 中?

java - java应用程序中的缓冲图像问题

java - Java 中的全局键盘记录器

c++ - 多氧 C++ : document privately inherited members exposed by the "using" declaration