如何从获取进程列表的所有方法中隐藏进程?

逆向工程 视窗 x86 恶意软件 x64dbg x86-64
2021-07-07 23:22:38

所以似乎有很多方法可以获得进程列表,虽然我不确定在低级别他们是否从同一个地方获取它们

所以这些是我知道的方法:

  1. 查询系统信息(Zw 或 Nt)

  2. FS 寄存器指向的 TEB 中的某个位置

  3. CreateToolhelp32Snapshot

我想还有更多的方法

所以我的问题是:

  1. 这些方法是否在进程的虚拟内存中使用相同的结构/链表,或者它们可能使用不同的方法?

  2. 如果我挂钩 ZwQuerySystemInformation,这会阻止进程获取进程列表吗?如果没有,那么我如何确定某个进程无法获得该列表?我应该挂钩或修改哪些功能?

1个回答
  1. 几乎,他们最终都会读取 PEPROCESS 对象目录。

  2. 也许不是,取决于你想隐藏什么。如果它只是一些基本的用户模式进程迭代,那么你可能没问题。不过,有很多方法可以迭代进程对象目录,例如 ZwGetNextProcess。

如果您想阻止对您的进程的访问,您最好的选择可能是 ObRegisterCallbacks,但根据权限级别和它们的迭代方式,它仍然不够。