第一部分:理解NtQuerySystemInformation
API
在Windows操作系统中,NtQuerySystemInformation
是一个非常关键的API,它提供了对系统的各种信息的访问。尤其是在涉及系统进程、线程和其他内核级信息的查询时,它发挥了关键作用。而对于黑客和恶意软件开发者来说,为了使其恶意软件隐身或避免被杀毒软件检测到,他们通常需要隐藏其相关进程。这正是我们可以通过挂钩(Hooking)NtQuerySystemInformation
API来达到的目的。
Hooking可以理解为一种技巧,它允许开发者拦截或修改函数的调用。在我们的上下文中,我们将拦截NtQuerySystemInformation
的调用,并对返回的进程列表进行修改,从而达到隐藏特定进程的目的。
创建基础DLL结构
为了实现挂钩,我们首先需要创建一个DLL,这个DLL将会被注入到其他进程中。接下来的代码就是这个DLL的基本结构。
#include <windows.h>
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
switch (ul_reason_for_call) {
case DLL_PROCESS_ATTACH:
// 这里放我们的挂钩代码
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case D