2013-07-31 51 views
0

我正在编写一个程序,将终止任何给定的过程。 链接到我的代码:Link绕过ZwTerminateProcess挂钩

我期望它终止任何进程,绕过任何钩子。 但是安全软件仍然可以阻止终止(我已经使用sandboxie和processguard测试过)?

我不明白他们如何能做到这一点。我的程序重写了函数,我希望通过这种方式去除钩子。

如何绕过挂钩?这段代码中我错过了什么?

P.S:此程序崩溃第三ZwTerminateProcess通话。有人可以帮忙吗?

在此先感谢。

+0

你在做什么是从事墙壁和梯子的游戏。接下来将是一个应用程序,即使您的应用程序禁用了挂钩,也要挂钩终止。战斗从未结束。并没有任何支持。如果你描述你的实际问题,也许我们可以开发一个解决方案。 –

+0

我的实际问题在问题中陈述。为了学习的目的,我只是写了一个杀死任何给定PID的小控制台工具。目前,我没有任何计划来实施其他工具的答案。 –

+0

您在原始问题中没有提及“用于学习目的”。我想知道是否有一些生产问题,你试图解决的地方,你认为终止一个过程,并绕过钩子来解决它。 (如果你找到了一个终止和绕过钩子的方法,下一个人会问:“即使有人试图绕过钩子,我怎么能终止钩子?”) –

回答

0

有时候,AV和沙盒软件最终将在内核修改函数指针表。没有写驱动程序,没有简单的方法来解决这个问题,因为该功能可能在系统范围内(AV所能做到的)或特定的应用程序(沙箱会做什么)被禁用。

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

+0

但是它会重写原来的指令吗?这不会有帮助吗? –

+0

不过,您正在用户过程中重写用户(第3环)代码。所以你实际上并没有恢复内核(环0)结构的变化。你所做的只是改变Windows决定加载到内存中的DLL的代码。 如果沙箱只是覆盖那些用户指令(我怀疑),那么你的方法将工作。但情况可能并非如此。 – asdf

+0

我该如何恢复内核结构?使用内核模式驱动程序? –