gpt4 book ai didi

c++ - 将 Ctrl+C 注入(inject)目标进程

转载 作者:可可西里 更新时间:2023-11-01 11:22:13 26 4
gpt4 key购买 nike

我有一个进程,它通过调用 SetConsoleCtrlHandler 来获得 CtrlBreak 处理程序。此处理程序监听 CTRL_BREAK_EVENT 并执行一些操作(不退出)。此进程未附加到控制台。我们称其为目标进程。

接下来,我编写了一个单独的程序,它接受一个 PID,我想在 kernel*!CtrlRoutine 的地址启动一个远程线程,以便目标进程的 CtrlBreak 处理程序是执行,例如:

hRemoteThread=CreateRemoteThread(hRemoteProc, NULL, 0,
(LPTHREAD_START_ROUTINE)dwEntryPoint,
(void *)CTRL_BREAK_EVENT, CREATE_SUSPENDED, NULL);
ResumeThread(hRemoteThread);

问题是,如何在远程进程(dwEntryPoint)中找到kernel*!CtrlRoutine的地址?

我看到一个示例,其中程序注册了自己的 CtrlBreakHandler,然后使用 __asm 遍历堆栈以获取地址,但此代码在 Windows 2008 Server 上无法正常工作。

请注意,我无法重新编译目标进程,因此我必须在不修改目标进程的情况下执行此操作。

最佳答案

Microsoft 提供了一个 GenerateConsoleCtrlEvent function为此目的。

关于c++ - 将 Ctrl+C 注入(inject)目标进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3988157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com