2

我需要在 vc++ .net 中执行这三个步骤

1. 杀死原管

2. 制作新管道

3. 摆脱正在使用新管道的正在运行的应用程序

使用进程资源管理器并使用按钮(“查找句柄或 DLL”)和命令(“\Device\NamedPipe\”)我发现我需要杀死并重新创建的命名管道是(“\Device\NamedPipe\C :\Users\Andrew\Desktop\The Library\Media\Games\Nexon\MapleStory\BlackCipher\NexonGuard")。

参考也将是它有 1 个句柄。

如果可能的话,我将如何获取管道名称而不是使用 Process Explorer。

我只是在问如何开始这 3 个步骤,我将在 vc++ .net 中对此进行编码。

4

1 回答 1

3
  1. 一般来说,你不能。管道与任何其他执行对象(文件、注册表项等)一样,在该对象的所有句柄都关闭之前不会被销毁。您将不得不使用管道强制进程为您关闭它。

  2. 您可以通过调用 CreatePipe 创建一个新管道。

  3. 没有记录在案的方法可以做到这一点。您需要遍历每个进程的句柄表以查看它们是否具有给定管道的句柄,然后在该进程上调用 TerminateProcess。您很可能需要使用 SeDebugPrivilege 来执行此操作。(如果您实际上是在尝试绕过反作弊系统,那么利用此特权并检查相关程序的内部可能会引发一些问题;))

进程资源管理器通过加载到内核(驱动程序)中实现了#3,但这在 Visual Studio 之类的任何东西中都无法实现——您需要学习编写驱动程序,并且这些驱动程序是使用 Windows 驱动程序工具包构建的。

于 2012-07-18T05:10:48.750 回答