gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 20:37:44 24 4
gpt4 key购买 nike

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

方法一:
我尝试使用 EasyHook 将 dll 注入(inject)进程,然后从注入(inject)的线程中尝试以下操作:
- 开放互斥体
- ReleaseMutex
它给了我 ERROR_NOT_OWNER 错误,可能是因为发布是在与调用 AcquireMutex 的线程不同的线程上调用的。

方法二:
注入(inject) dll 后,我尝试使用 mHook Hook CreateMutex。 Hook 的 CreateMutex 只是回调了原来的 CreateMutex。但这只会使应用程序崩溃。

我可以使用 procexp 来关闭互斥体,但我需要以编程方式进行。 procexp 是如何做到的?如何在没有任何内核模式代码的情况下以编程方式完成?

最佳答案

使用NtQuerySystemInformation()要检索打开的句柄数组,循环遍历数组,直到在目标进程中找到所需的互斥句柄,然后使用 DuplicateHandle() 关闭它通过指定 DUPLICATE_CLOSE_SOURCE旗帜。

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

HOWTO: Enumerate handles

关于winapi - procexp 如何关闭另一个进程持有的互斥锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16292186/

24 4 0