.net 我怎样才能杀死一根管子?

.net 我怎样才能杀死一根管子?,.net,visual-c++,.net,Visual C++,我需要在vc++.net中执行这三个步骤 1.关闭原始管道 2.制作新管道 3.摆脱正在运行的使用新管道的应用程序 使用Process explorer并使用按钮(“查找句柄或DLL”)和命令(“\Device\NamedPipe\”),我发现我需要杀死并重新创建的NamedPipe将是(“\Device\NamedPipe\C:\Users\Andrew\Desktop\the Library\Media\Games\Nexon\MapleStory\BlackCipher\NexonGuar

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

1.关闭原始管道

2.制作新管道

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

使用Process explorer并使用按钮(“查找句柄或DLL”)和命令(“\Device\NamedPipe\”),我发现我需要杀死并重新创建的NamedPipe将是(“\Device\NamedPipe\C:\Users\Andrew\Desktop\the Library\Media\Games\Nexon\MapleStory\BlackCipher\NexonGuard”)

引用还应该是它有一个句柄

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

我只是问我如何开始这3个步骤,我将在vc++.net中编写这3个步骤

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

  • 您可以通过调用CreatePipe来创建新管道

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


  • Process explorer通过加载到内核(驱动程序)实现#3,但是像Visual Studio这样的东西是不可能做到的--你需要学习编写驱动程序,这些驱动程序是用Windows驱动程序工具包构建的。

    我们是不是在试图欺骗maplestory?在这个问题上.NET到底扮演什么角色?meh.dll使用的是Windows窗体。@Andrew:你需要访问程序的源代码,并对其进行修改以实现此目的。您不能从拥有管道的进程之外执行此操作。听起来执行官是专门为阻止你所做的事情而写的。@Billy:我可以通过运行在MapleStory.exe旁边的任务管理器杀死BlackChiper.aes(它有管道)。所以,一旦我杀死BlackChiper.aes,我可以通过重新运行.aes然后创建管道来重新创建它的管道和进程吗?@Andrew:这取决于所讨论的实际程序;我不知道。然而,我怀疑这是行不通的。反作弊程序并没有那么愚蠢(仅仅因为你创建了它就重新打开已经存在的管道)。@比利:我会试试我提到的,谢谢你提供的所有信息。