在Linux中删除进程

时间:2013-03-10 13:52:41

标签: linux process kernel

如果有人想要在Linux中编写内核模块这个疯狂而危险的想法......

  • 在内核的内部流程表中查找由PID指定的进程
  • 从表
  • 中提取内存中进程的开始/结束地址
  • 用0's
  • 覆盖此过程的所有内存

然后......

  • 这会立即终止任何流程吗?
  • 这是多么“不安全”?是否有可能在没有引起内核恐慌的情况下?

1 个答案:

答案 0 :(得分:1)

用零(在x86中)覆盖进程的代码很可能不会阻止进程执行,但由于这成为一个简单的指令,我认为ADD EAX,[EAX],它将一直走到代码段的结尾[除非EAX指向无效的内存]。显然,如果进程的寄存器被设置为某个无效的内存地址[在64位中,非规范的值将是好的,在32位中,是一种写保护的,如零],以及/或者内存中充满了导致“无效操作码”的内容,那么这将是另一回事。

我真的不知道这比使用SIGKILL(又名KILL -9 pid)更好“ - 如果进程被阻塞在内核中并且不知何故没有离开内核,它就赢了”有助于覆盖代码空间,因为该进程无论如何都没有运行该代码。如果内核中存在错误,那么对进程的用户空间内存做什么并不重要。修复内核错误!

相关问题