c ++将dll注入cmd.exe监视命令

时间:2016-06-23 08:25:02

标签: c++ c hook setwindowshookex

我尝试向cmd.exe注入一个dll,它将挂钩输入命令并将它们保存到文件中。 我设法做了注射,并获得了我想在WH_KEYBOARD上使用钩子的一些信息。

如何通过其他方式挂钩cmd.exe进程的输入而不是挂钩键盘事件?

1 个答案:

答案 0 :(得分:0)

您可以查看WinAPI调用cmd.exe生成并找到一个将命令字符串作为参数并挂钩它,例如与Microsoft Detours。你也可以挂钩cmd.exe的内部函数,但这样不太容易。

我将我在Windows系统上的cmd.exe(Windows 10 v1511 x86_64)加载到x64dbg,并且有两次调用ReadConsoleW。第一个:

Address=00007FF6331A29CC
Disassembly=call qword ptr ds:[<&ReadConsoleW>]
Destination=cmd.&ReadConsoleW
处理通过控制台输入的每个命令后调用

Per x64 fastcall conventionrdx指向其第二个参数(缓冲区)。虽然它正式是一个输出参数,但在调用函数之前,它指向输入命令的CRLF终止副本。

你可以挂钩那个电话或从那里追溯,找到一个更适合挂钩的地方。