防止管理员获取对象的所有权
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 权限。
开始于:
- PatchGuard 已启用,因此即使对于 EAC 驱动程序也无法使用旧式内核挂钩
- 内核公开的 API 仅允许驱动程序收到系统调用发生的通知,而不是更改现有内核行为
- EasyAntiCheat 驱动程序文件系统微型过滤器不应影响进程 ACL。事实上,即使使用 FLTMC.exe
卸载过滤器,结果也是一样的
- 进程中的代码注入似乎没有发生,至少在使用进程监视器列出 加载图像 事件时,即使可以通过其他方式实现注入(我对此了解不够)
- 该进程不受 Protected 或 Light Protected
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
) 中提供了一个很好的例子。
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 权限。
开始于:
- PatchGuard 已启用,因此即使对于 EAC 驱动程序也无法使用旧式内核挂钩
- 内核公开的 API 仅允许驱动程序收到系统调用发生的通知,而不是更改现有内核行为
- EasyAntiCheat 驱动程序文件系统微型过滤器不应影响进程 ACL。事实上,即使使用 FLTMC.exe 卸载过滤器,结果也是一样的
- 进程中的代码注入似乎没有发生,至少在使用进程监视器列出 加载图像 事件时,即使可以通过其他方式实现注入(我对此了解不够)
- 该进程不受 Protected 或 Light Protected
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
) 中提供了一个很好的例子。