1.前言
对于一些病毒、以及保护软件的安全开发领域,常常需要实现这样一个需求:隐藏进程。
也就是让用户无法察觉到这个进程,自然也就无法轻易的去关闭掉进程了。
而实现这一目的最佳的方案当然是进行驱动开发、从内核下手,但这样做难度会立刻增大,因为驱动开发是一个较为底层的领域,你需要进一步学习更多的东西。
但如果仅仅是简单的隐藏进程需求,最简单的方式还是直接从win api下手,因为任务管理器本质上也是在调用一些win api遍历系统所有进程,只要我们能hook掉关键函数,让其跳过我们的进程不显示,就能轻松实现进程隐藏的效果了。
2.技术前瞻
所以关键技术点就来到了hook任务管理器中的win api函数,通过在网上搜寻,你很容易就能找到,任务管理器底层调用了一个叫做ZwQuerySystemInformation
名字的win api,通过它来查询进程信息的。
这是一个底层的、windows官方甚至在官网没有明确说明的一个win api,大概率是前人逆向分析出来的结果。
而我们只需要利用这份成果,hook这个函数即可。
常见的hook方式是dll注入,但这样做很容易被人分析察觉,很多工具都是可以直接分析一个进程加载了哪些外部dll的。