procexp如何关闭另一个进程持有的互斥锁?

pku*_*ar0 3 winapi

我试图关闭一个使用Win32函数在Windows上进程持有的互斥锁.这可以使用procexp完成,但我需要在不使用procexp GUI的情况下以编程方式完成.

方法1: 我尝试使用EasyHook将dll注入到进程中,然后从注入的线程中尝试以下操作: - OpenMutex
- ReleaseMutex它给了我ERROR_NOT_OWNER错误可能是因为发布是在与调用AcquireMutex的线程不同的线程上调用的.

方法2: 注入dll后,我尝试使用mHook挂钩CreateMutex.钩住的CreateMutex只回调了原始的CreateMutex.但这只会使应用程序崩溃.

我可以使用procexp关闭互斥锁,但我需要以编程方式执行此操作.procexp如何做到这一点?如何在没有任何内核模式代码的情况下以编程方式完成?

Rem*_*eau 6

使用NtQuerySystemInformation()来检索打开句柄的数组,循环遍历数组,直到在目标进程中找到所需的互斥锁句柄,然后DuplicateHandle()通过指定DUPLICATE_CLOSE_SOURCE标志将其关闭.

以下文章更详细地解释了它:

HOWTO:枚举句柄