防止管理员获取对象的所有权

Prevent administrator from taking ownership of an object

As a premise I want you to know that this has nothing to do with game cheating, as I am only interested in knowing the way that Windows works. I don't even personally play video-games.

Fortnite自带的EasyAntiCheat,防止修改游戏进程,修改他的参数

例如,尝试更改优先级(我不是在寻找更改优先级的方法,因为已经在 Wayback Machine 捕获中发布了解决方案 here, and here)导致 访问被拒绝错误。

使用 Process Hacker 或 Process Explorer 修改进程的 ACL 也会产生相同的错误,即使用户是管理员并拥有 SeTakeOwnershipPrivilege 权限。


开始于:

Windows 10 x64 (1803) 允许 EAC 执行上述操作的机制是什么?也许要找到答案就足够了,更多地关注第 4 种方法。

Here 您可以在 Load Image 事件列表中找到一个 link,这些事件从 [ 启动时显示=59=] 在 Sysinternals Process Monitor 中结束。

P.S.: 如有任何语法错误,请原谅,英语不是我的主要语言。

所以我几乎是随机地在 Reddit 上找到 this post,我认为这解释了它。

关键是我不知道的ObRegisterCallbacks内核模式函数。

它允许驱动程序注册有关进程、线程和(从 Windows 10 个开始)桌面对象的事件。

我最初知道 PsSetCreateProcessNotifyRoutine,它不仅允许 "passively" 监视进程 creation/termination,而且还为驱动程序提供了一种 "actively" 取消创建的方法返回回调错误。

然而,在我的案例中,这不是我要处理的问题:没有进程创建正在进行,只是我试图提高未 Protected[=37= 的进程的优先级] 或 避光.

ObRegisterCallbacks的用法是这样的: 保护驱动程序,从注册的回调中,将句柄请求的 DesiredAccess 剥离到它想要的,使句柄创建操作继续进行,因为进程实际上从未要求能够 terminate/set 进程优先级,从而有效地阻止它。

this GitHub repo. This link is a permalink to the point in code that accesses the DesiredAccess member of CreateHandleInformation (or DuplicateHandleInformation) 中提供了一个很好的例子。