【问题标题】:Key logger wont record key strokes without console键盘记录器不会在没有控制台的情况下记录击键
【发布时间】:2013-11-18 14:08:19
【问题描述】:

我用 C++ 创建了一个小型的基本键盘记录器。出于某种原因,当我在显示控制台的情况下编译和运行程序时,它会记录我在我正在使用的任何程序(例如浏览器)中所做的每一次击键,并将其存储在文本文件中。但是,当我让它不显示控制台窗口时,它不会记录任何内容,它只是后台的一个进程,什么都不做。这是我的代码的链接:http://pastebin.com/4wqQyLJ9 隐藏控制台给我带来麻烦的函数是 Stealth() 函数。任何建议、提示或提示都会有所帮助。

【问题讨论】:

  • Stealth() 的意义何在?如果您作为控制台程序运行,您已经有一个控制台,那么只需 ShowWindow(GetConsoleWindow(), SW_HIDE);如果你作为 GUI 运行......根本不要创建控制台。
  • 请将您的代码缩减为Short, Self Contained, Correct (Compilable), Example 并将代码包含在您的问题中,不是指向它的链接。

标签: c++ logging hwnd keylogger findwindow


【解决方案1】:

使用这个功能,对我来说效果很好。

  ShowWindow(GetConsoleWindow(), SW_HIDE);

【讨论】:

  • 这对我也不起作用。您可能必须使记录器更复杂并响应来自操作系统的事件。据我所知,这将是唯一可靠的方法。处理 Win32 或 POSIX 很痛苦,但它确实有效。
  • int main() 改为 int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)。然后删除ShowWindow.. 这将使控制台不可见。
【解决方案2】:

如果您不需要 UI,我会考虑为此类事情使用 Windows 服务。如果需要,还可以使用 GetAsyncKeyState 更加隐蔽。这个 C++ 源代码可能有用...

Windows Service Keylogger

【讨论】:

    【解决方案3】:

    我没有在程序启动后隐藏窗口,而是通过不解决这个问题 有一个窗口开始。用-mwindows编译,没有窗口 在程序启动时创建。

    Example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多