Windows 绕过ZwTerminateProcess钩子

Windows 绕过ZwTerminateProcess钩子,windows,process,hook,terminate,Windows,Process,Hook,Terminate,我正在编写一个程序,它将终止任何给定的进程。 链接到我的代码: 我希望它能够终止任何进程,绕过任何挂钩。 但是安全软件仍然可以阻止终止(到目前为止,我已经用sandboxie和processguard进行了测试) 我不明白他们是怎么做到的。我的程序重写函数,我希望通过这种方式删除钩子 如何绕过钩子?我在这段代码中遗漏了什么 注意:这个程序在第三次ZwTerminateProcess调用中崩溃。有人能帮忙吗 提前感谢。有时候,AV和沙盒软件最终会修改内核中的函数指针表。除了编写驱动程序之外,没有简

我正在编写一个程序,它将终止任何给定的进程。 链接到我的代码:

我希望它能够终止任何进程,绕过任何挂钩。 但是安全软件仍然可以阻止终止(到目前为止,我已经用sandboxie和processguard进行了测试)

我不明白他们是怎么做到的。我的程序重写函数,我希望通过这种方式删除钩子

如何绕过钩子?我在这段代码中遗漏了什么

注意:这个程序在第三次ZwTerminateProcess调用中崩溃。有人能帮忙吗


提前感谢。

有时候,AV和沙盒软件最终会修改内核中的函数指针表。除了编写驱动程序之外,没有简单的方法可以解决这个问题,因为该功能可能在系统范围内被禁用(AV的作用)或针对特定的应用程序(沙盒的作用)


如果您确实能够打开流程的句柄,那么您仍然可以做很多事情。也许你可以试着间接杀死它。我会尝试直接写入进程的内存,并用垃圾(或对ExitProcess的调用)覆盖它。

但它会重写原始指令吗?这不会有帮助吗?不过,您正在用户进程中重写用户(环3)代码。因此,您实际上并没有恢复内核(环0)结构中的更改。您所做的只是更改Windows决定加载到内存中的DLL的代码。如果沙箱只是覆盖了那些用户指令(我对此表示怀疑),那么您的方法将起作用。但情况可能并非如此。我如何恢复内核结构?使用内核模式驱动程序?是的,这是唯一的选择。你能告诉我,我必须在我的驱动程序中做什么吗?你正在做的是玩一个墙和梯子的游戏。下一步将是一个应用程序,它希望钩住终止,即使您的应用程序正在禁用钩子。战斗永远不会结束。所有这些都不受支持。如果你描述你的实际问题,也许我们可以制定一个解决方案。我的实际问题在问题中陈述。为了便于学习,我正在编写一个小的控制台工具,它可以删除任何给定的pid。目前,我没有任何计划来实现其他工具的答案。您在原始问题中没有提到“为了学习目的”。我想知道是否有一些生产问题,你正在试图解决,你认为终止一个进程,绕过钩子是要解决它。(如果你找到了终止和绕过钩子的方法,下一个人会问,“即使有人试图绕过钩子,我如何才能终止钩子?”)