用户模式 Rootkit¶
GameGuard 利用用户模式 rootkit 拒绝机器人访问它们运行所需的 Windows API 函数。rootkit 在函数的最低级入口点钩住它们,通常在 ntdll.dll、user32.dll 和 kernel32.dll 中未文档化的函数内部。以下是 GameGuard 钩住的最著名 API 函数,以及 GameGuard 在每个被钩函数内部做什么:
NtOpenProcess():阻止对受保护游戏的任何 OpenProcess() 尝试。
NtProtectVirtualMemory():阻止对游戏的任何 VirtualProtect()或 VirtualProtectEx() 尝试。
NtReadVirtualMemory() 和 NtWriteVirtualMemory():阻止对游戏的任何 ReadProcessMemory() 和 WriteProcessMemory() 尝试。
NtSuspendProcess() 和 NtSuspendThread():阻止任何挂起 GameGuard 的尝试。
NtTerminateProcess() 和 NtTerminateThread():阻止任何终止 GameGuard 的尝试。
PostMessage()、SendMessage() 和 SendInput():阻止任何向游戏发送程序化输入的尝试。
SetWindowsHookEx():阻止机器人全局拦截鼠标和键盘输入。
CreateProcessInternal():自动检测并钩住新进程。
GetProcAddress()、LoadLibraryEx() 和 MapViewOfFileEx():阻止任何向游戏或 GameGuard 注入库的尝试。