我需要在vc ++ .net
中执行这三个步骤1。 杀死原始管道
2。 制作新管道
3. 摆脱正在使用新管道的正在运行的应用程序
使用Process explorer并使用按钮('Find Handle或DLL')和命令(“\ Device \ NamedPipe \”),我发现我需要杀死并重新创建的namedpipe将是(“\ Device \” NamedPipe \ C:\ Users \ Andrew \ Desktop \ The Library \ Media \ Games \ Nexon \ MapleStory \ BlackCipher \ NexonGuard“)。
引用也是它有1个句柄。
如果可能,我将如何获取管道名称而不是使用Process Explorer。
我只想问我如何开始这3个步骤,我将在vc ++ .net中对此进行编码。
答案 0 :(得分:2)
一般来说,你不能。与任何其他执行对象(文件,注册表项等)一样,管道在该对象的所有句柄都关闭之前不会被销毁。您必须使用管道强制进程关闭它。
您可以通过调用CreatePipe来创建新管道。
没有记录的方法可以做到这一点。您需要遍历每个进程的句柄表以查看它们是否具有给定管道的句柄,然后在该进程上调用TerminateProcess。很可能你需要采取SeDebugPrivilege来做到这一点。 (如果你实际上试图绕过反作弊系统,那么取得这个特权并检查有关程序的内容可能会引起一些关注;)
进程资源管理器通过加载到内核(驱动程序)来实现#3,但是从Visual Studio这样的东西不能实现 - 您需要学习编写驱动程序,而这些驱动程序是使用Windows驱动程序工具包构建的。